อยากทราบว่าจากไฟล์ตัวอย่างเราสามารถใช้ macro มาช่วยในการ SetPrintArea ได้หรือไม่คะ เพราะเวลาสั่งต้องมานั่ง set และ clear ทีละvendor ทำให้เสียเวลามาก พอจะมีวิธีให้สั่งปริ้นครั้งเดียวออกมาแยก vendor ได้หรือไม่คะ ขอบคุณค่ะ
Printable View
อยากทราบว่าจากไฟล์ตัวอย่างเราสามารถใช้ macro มาช่วยในการ SetPrintArea ได้หรือไม่คะ เพราะเวลาสั่งต้องมานั่ง set และ clear ทีละvendor ทำให้เสียเวลามาก พอจะมีวิธีให้สั่งปริ้นครั้งเดียวออกมาแยก vendor ได้หรือไม่คะ ขอบคุณค่ะ
ทดลองบันทึก Macro โดยทำการกำหนด Printarea จะได้
ActiveSheet.PageSetup.PrintArea = "$A$1:$C$12"
ดังนั้นถ้าต้องการพื้นที่ใหม่ ก็ใส่ลงไปแทน "$A$1:$C$12"
สังเกตว่ามี " ปิดหัวท้าย แสดงว่าเป็น String ครับ
ขอบคุณค่ะ คุณ gaka แต่ว่าดิฉันไม่ทราบ area ที่แน่นอนนะคะ เพราะแต่ละ vendor จะมีข้อมูลไม่เท่ากัน และหาก dowload ข้อมูลใหม่ข้อมูลก็จะเปลี่ยนไป แต่ช่วงที่เว้นว่างของแต่ะละ vendor จะเท่าเดิมเหมือนไฟล์แนบ พอจะมีสูตรไหนช่วยได้ไหมคะ เพราะต้องทำทุกเดือนซึ่งนานมากกว่าจะเสร็จ (ข้อมูลมีเยอะมาก)
ลองแนบแฟ้มตัวอย่างมาดูกันครับ ตารางไม่ต้องใหญ่ อยากดูว่าโครงสร้างตารางที่จะพิมพ์เป็นอย่างไร มีข้อมูลใดที่เป็นจุดชี้ในการกำหนดพื้นที่พิมพ์
ที่จะยากก็คือ ต้องการให้แบ่งพิมพ์โดยมี Page Break ต่างไปจากเดิมในข้อมูลแต่ละครั้งด้วยไหม
ตัวอย่าง report ที่ต้องการปริ้นค่ะ โดยแต่ละ vendor ต้องปริ้นแยกกันเพื่อส่งให้แต่ละ vendor
ดูตัวอย่างแล้วเห็นว่าแยกพิมพ์แต่ละตารางตามแต่ละชีทใช่ไหมครับ อย่างนี้ทำได้ไม่ยาก ให้ใช้ Macro Recorder บันทึกตามนี้
จะได้รหัสตามนี้ ซึ่งนำไปใช้ได้กับทุกชีท
- กดปุ่ม Ctrl+Home เพื่อไปที่เซลล์แรกในตาราง
- กดปุ่ม Ctrl+Shift+End เพื่อเลือกเซลล์ไปจนถึงเซลล์สุดท้ายในตาราง
- สัง File > Print > กาช่อง Selection เพื่อให้พิมพ์พื้นที่ที่เลือกไว้
เคยอ่านพบว่า xlLastCell จะหาตำแหน่งพลาดใน Excel รุ่นก่อนๆ ไม่ทราบว่ารุ่น 2003 นี้แก้ไขหรือยัง ถ้าพบว่าหาตำแหน่งพลาด ให้สั่ง Save File แล้วเปิดแฟ้มขึ้นมาใหม่ จะทำให้หา xlLastCell ได้ถูกต้องCode:Sub MyPrint()
Range("A1").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.PrintOut Copies:=1, Collate:=True
Range("A1").Select
End Sub
แต่ถ้าในชีทหนึ่งๆ ต้องแบ่งแยกตารางออกไปพิมพ์แยกเรื่องกัน จะทำได้ยากครับ
ถ้า print ทีละ vendor และข้อมูลมีการบันทึกไว้เป็นตารางฐานข้อมูล ผมคิดว่า ใช้วิธี เลือกรหัส vendor ที่ต้องการ แล้วดึงข้อมูลของ vendor นั้นๆ จากฐานข้อมูลมาแสดง แล้วสั่ง print ตามปกติ น่าจะง่ายกว่ามั๊ยครับ ไม่เห็นจำเป็นต้องใช้ Macro เลย
ลองดูไฟล์ตัวอย่างครับ แนวคิดน่าจะคล้ายๆ กัน
ขอขอบคุณทุกท่านที่ให้ความรู้เพิ่มเติมนะคะ แต่ว่า report ที่ดิฉันต้องการนั้นคงเป็นไปได้ยากแล้วหล่ะคะ อย่างที่ท่าน อ.สมเกียรติ บอกว่า "แต่ถ้าในชีทหนึ่งๆ ต้องแบ่งแยกตารางออกไปพิมพ์แยกเรื่องกัน จะทำได้ยากครับ" เพราะ vendor ทั้งหมดจะอยู่ในชีทเดียวกันต้องมา SetPrintArea เอง
ส่วนที่คุณเอกบอกคงทำไม่ได้ค่ะ เพราะเราไม่มีฐานข้อมูลทั้งหมด แต่ข้อมูลมาจากการ download มาจากระบบซึ่งในแต่ละเดือน vendor ไม่เหมือนกันค่ะ
ถ้าเป็นไปได้ยากก็คงต้องทำ manual เหมือนเดิมค่ะ
ขอบคุณทุกท่านที่กรุณาเพิ่มเติมแนวทางให้นะคะ
แนะนำสร้างฐานข้อมูลใหม่ ดูที่ Sheet1 แล้ใช้Pivot Table กับสูตร Vlookup ดูสิครับแล้วทำการแก้ไขตกแต่งนิดหน่อยก็ได้แล้ว ไม่แน่ใจว่าตรงตามที่ต้องการหรือเปล่า ดูไฟล์แนบครับ
Download Now
พอคลิก Download Now แล้วจะปรากฏหน้าเว็บเพจใหม่ ให้เลื่อนลงมาด้านล่าง จะเจอตัวนับถอยหลัง รอให้ตัวนับถอยหลังนับจนเสร็จก่อน