Page 1 of 1
การดึงข้อมูล มาใส่ template แล้วให้ก๊อปปี้ตัวเอง เรียงตามแถวข้อมูลที่มี
Posted: Fri Jun 24, 2016 11:26 am
by sweetken
สวัสดีค่ะอาจารย์
ดิฉัน ต้องการดึงข้อมูล ข้อมูลจาก sheet ที่ชื่อ Panal list แล้วให้ Copy ตัวเองใส่เทมเพลต แล้วแสดงเรียงออกมา 2 แถวให้พอดีหน้ากระดาษ A4 โดยที่ข้อมูลไม่ผิดพลาด ทั้งนี้ดิฉันได้แนบไฟล์ตัวอย่างมาให้แล้วคะ
คำถาม
1. เนื่องจากดิฉันไม่มีความรู้เรื่อง VBA เลย จึงเขียนตามที่ได้เปิดหนังสือ แล้วก๊อปเอามาใส่บ้าง รู้สึกถึงความไม่เรียบร้อย จึงอยากจะขอคำแนะนำว่า มีวิธีเขียนให้กระชับกว่านี้ไหม
2. แล้วมีวิธีเขียนให้ ก๊อปปี้ตัวเองโดยไม่ผ่าน เทมเพลตไหมคะ
3. ดิฉันพยายามดึงรูป ไปไว้หน้า Print แต่ไม่สามารถดึงไปได้ ขอความกรุณาแนะนำวิธีด้วยคะ (เนื่องจากเขียนให้ดึงข้อมูลจากหน้า เทมเพลต แล้วก๊อบตัวเองลงมา จนบรรทัดสุดท้าย แล้วหยุดค่ะ)
ขอบพระคุณอย่างสูง
Re: การดึงข้อมูล มาใส่ template แล้วให้ก๊อปปี้ตัวเอง เรียงตามแถวข้อมูลที่มี
Posted: Fri Jun 24, 2016 9:56 pm
by snasui

เข้าใจว่าเป็นการ Loop ค่าในชีท Panel List เข้าชีต Template แล้ว Copy จากชีต Template ไปวางในชีต Print อีกที
สามารถลดขั้นตอนโดยให้ Link ตรงไปยังชีต Print ได้เลย จะได้ไม่ต้องเสียเวลา Copy อีกรอบ
ส่วนรูปก็ Copy ไปเอาวางเองยังตำแหน่งที่ต้องการได้เลยครับ
การจะให้พอดีหน้า A4 สามารถจัดเอาไว้ล่วงหน้าได้ ไม่จำเป็นต้องจัดหน้าใหม่ทุกครั้งที่ Run Code ไม่ทราบว่าหากทำตามข้างต้นนี้จะติดปัญหาใดหรือไม่ครับ
การใช้ Code โดยไม่ผ่าน Template จะยุ่งยากมากกว่าวิธีที่ใช้อยู่นี้ หากต้องการจะทำต้องเขียนมาเองก่อน ติดแล้วค่อยถามกันครับ
กรณี Code ยาวและไม่กระชับแต่สามารถแก้ไขได้เองย่อมจะให้ประโยชน์มากกว่า Code สั้นแต่เข้าใจยากและแก้ไขเองลำบาก หากไม่ติดปัญหาใด ค่อย ๆ ปรับปรุงไปเรื่อย ๆ ไม่ต้องรีบร้อน ปรับเองแล้วติดตรงไหนสามารถสอบถามมาได้ครับ
Re: การดึงข้อมูล มาใส่ template แล้วให้ก๊อปปี้ตัวเอง เรียงตามแถวข้อมูลที่มี
Posted: Sat Jun 25, 2016 9:21 am
by sweetken
ขอบพระคุณสำหรับคำแนะนำค่ะ
Re: การดึงข้อมูล มาใส่ template แล้วให้ก๊อปปี้ตัวเอง เรียงตามแถวข้อมูลที่มี
Posted: Mon Jul 04, 2016 10:45 am
by sweetken
สวัสดีค่ะอาจารย์
ตอนนี้ติดปัญหาเรื่องการวางรูป ที่ก๊อบมาแล้วรูปไม่ตามมาด้วย จึงพยายามใช้ macro ผลที่ได้คือ จะทำการแทรกได้เท่าที่เรากำหนด ดังโค๊ดต่อไปนี้
Code: Select all
Sheets("template").Select
ActiveSheet.Shapes.Range(Array("Picture 2")).Select
Selection.Copy
Sheets("Print").Select
Range("A9").Select
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=3
Range("F9").Select
ActiveWindow.SmallScroll Down:=3
ActiveSheet.Paste
คือข้อมูลมันเพียงแค่ตัวอย่างจึงมีน้อยก๊อปไปวางได้เลย แต่ในกรณีใช้จริง มันมีตารางเป็นร้อยแถว จึงไม่สามารถก๊อปไปวางได้หมด
ขอคำแนะนำว่า มีวิธี ทำให้รูปสามารถก๊อปตัวเอง จนครบข้อมูลแล้วหยุด จะสามรถทำได้หรือเปล่าคะ
ขอบพระคุณค่ะ
Re: การดึงข้อมูล มาใส่ template แล้วให้ก๊อปปี้ตัวเอง เรียงตามแถวข้อมูลที่มี
Posted: Mon Jul 04, 2016 2:20 pm
by niwat2811
Code: Select all
Sub test()
Dim lr As Long
Application.ScreenUpdating = False
lr = Range("A" & Rows.Count).End(xlUp).Row
For i = 9 To lr Step 9
If Range("A" & i).Value = 1 Then
Sheets("Template").Activate
Range("A9").Copy
Sheets("Print").Select
Range("A" & i).Select
ActiveSheet.Paste
End If
Next i
lr = Range("F" & Rows.Count).End(xlUp).Row
For i = 9 To lr Step 9
If Range("F" & i).Value = 1 Then
Sheets("Template").Activate
Range("A9").Copy
Sheets("Print").Select
Range("F" & i).Select
ActiveSheet.Paste
End If
Next i
Application.ScreenUpdating = True
End Sub
สำหรับการ Copy รูปภาพลองใช้ Code นี้ดูว่าตรงตามความต้องการไหม
Re: การดึงข้อมูล มาใส่ template แล้วให้ก๊อปปี้ตัวเอง เรียงตามแถวข้อมูลที่มี
Posted: Mon Jul 04, 2016 2:25 pm
by sweetken
ขอบพระคุณมากค่ะ ตอนนี้ดิฉันสามารถรันโปรแกรมได้ ไม่ติดขัดแล้วค่ะ