กระทู้เก่าบอร์ด อ.Yeadram
2,566 7
URL.หัวข้อ /
URL
save report เป็น PDF แบบอัตโนมัติ
เรียนผู้รู้ทุกท่าน
เนื่องจากผมมีไฟล์ใบสั่งซื้อ ที่ต้อง upload เป็น pdf ส่งขึ้น web ซึ่งผมได้ทำ report ไว้แล้ว และใช้ตัว CutePdf ในการส่งออกเป็น pdf แต่มีความต้องการว่าอยากให้ โปรแกรมส่งไฟล์ออกอัตโนมัติ และ save เป็นชื่อเลขที่ใบสั่งซื้อโดยไม่ต้องถามและไม่ต้องใส่ชื่อไฟล์ใหม่ ผมได้ลองค้นกระทู้เก่า ๆ ดู คือทางอาจารย์ได้แนะนำการใช้ sendkeys ส่งชื่อไฟล์และ path ไป แต่ผมลองเอามาปรับแล้ว
โดยสร้างฟอร์มชื่อ MIDDLE_PO และมี Text0 เพื่อรับเลขที่ PO สำหรับ Report ก็ชื่อ MIDDLE_PO
ปรากฏว่า โค๊ดที่เขียน โปรแกรมยังถามหาชื่อไฟล์อยู่ครับ แต่พอทำหลาย ๆ ครั้ง (ประมาณ 4-5 ครั้ง) มันก็ save อัตโนมัติให้ แล้วก็บางครั้งมันให้ปุ่ม Numlock ใช้งานไม่ได้ แล้วบางครั้งก็ขึ้นมาถามให้ save หลายครั้ง ไม่แน่ใจว่าเกิดอะไรขึ้นครับ โดยผมเขียนไว้อย่างนี้ครับ
' ระบุชื่อรายงาน
Dim rpName As String
rpName = Forms!MIDDLE_PO!Text0
'สั่งprint รายงาน
DoCmd.OpenReport "MIDDLE_PO", acViewNormal, , , acHidden
' ระบุชื่อไฟล์และพาธสำหรับ pdf ปลายทาง
Dim PdfFileName As String
PdfFileName = "c:\PO\" & rpName
SendKeys PdfFileName
SendKeys "{ENTER}"
DoCmd.Close acReport, rpName, acSaveNo
เนื่องจากผมมีไฟล์ใบสั่งซื้อ ที่ต้อง upload เป็น pdf ส่งขึ้น web ซึ่งผมได้ทำ report ไว้แล้ว และใช้ตัว CutePdf ในการส่งออกเป็น pdf แต่มีความต้องการว่าอยากให้ โปรแกรมส่งไฟล์ออกอัตโนมัติ และ save เป็นชื่อเลขที่ใบสั่งซื้อโดยไม่ต้องถามและไม่ต้องใส่ชื่อไฟล์ใหม่ ผมได้ลองค้นกระทู้เก่า ๆ ดู คือทางอาจารย์ได้แนะนำการใช้ sendkeys ส่งชื่อไฟล์และ path ไป แต่ผมลองเอามาปรับแล้ว
โดยสร้างฟอร์มชื่อ MIDDLE_PO และมี Text0 เพื่อรับเลขที่ PO สำหรับ Report ก็ชื่อ MIDDLE_PO
ปรากฏว่า โค๊ดที่เขียน โปรแกรมยังถามหาชื่อไฟล์อยู่ครับ แต่พอทำหลาย ๆ ครั้ง (ประมาณ 4-5 ครั้ง) มันก็ save อัตโนมัติให้ แล้วก็บางครั้งมันให้ปุ่ม Numlock ใช้งานไม่ได้ แล้วบางครั้งก็ขึ้นมาถามให้ save หลายครั้ง ไม่แน่ใจว่าเกิดอะไรขึ้นครับ โดยผมเขียนไว้อย่างนี้ครับ
' ระบุชื่อรายงาน
Dim rpName As String
rpName = Forms!MIDDLE_PO!Text0
'สั่งprint รายงาน
DoCmd.OpenReport "MIDDLE_PO", acViewNormal, , , acHidden
' ระบุชื่อไฟล์และพาธสำหรับ pdf ปลายทาง
Dim PdfFileName As String
PdfFileName = "c:\PO\" & rpName
SendKeys PdfFileName
SendKeys "{ENTER}"
DoCmd.Close acReport, rpName, acSaveNo
7 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R16939
http://www.biopdf.com/guide/examples/microsoft_access/ เจอมาเพิ่มเติม เป็นตัวอย่าง VBA ที่ตั้งค่าชื่อไฟล์ที่พิมพ์ออกไป
biopdf ก็เป็น commercial เวอร์ชั่นของ bullzip นั่นเอง เขาว่าทางเทคนิคแล้วแตกต่างกันน้อยมาก
biopdf ก็เป็น commercial เวอร์ชั่นของ bullzip นั่นเอง เขาว่าทางเทคนิคแล้วแตกต่างกันน้อยมาก
3 @R16940
ขอบคุณครับ ยังงั้นผมก็คงต้องใช้ manual กันไปก่อน ตอนนี้ผมใช้วิธีก็คือให้ Access คัดลอกตัวแปรไว้ใน cllipboard แล้วเมื่อเปิดหน้า Cutepdf ให้ save ชื่อไฟล์ ก็ให้ผู้ใช้กด Ctrl+V แล้ว Enter ครับ ก็รู้สึกมันดูยังไง ๆ อยู่เหมือนกัน แต่ก็ดีกว่าต้องพิมพ์เองทั้งหมดครับ
ไม่แน่ใจว่าอาจารย์มีอะไรแนะนำเพิ่มเติมไม๊ครับ
ไม่แน่ใจว่าอาจารย์มีอะไรแนะนำเพิ่มเติมไม๊ครับ
4 @R16942
ถ้าชื่อไฟล์ pdf มันรันเองเป็นค่าวันที่และเวลา เช่น report20130828101400 อย่างงี้ได้ไหม ตัว bullzip ทำได้ครับ
5 @R16943
เรียน อาจารย์สันติสุข
ต้องระบุเป็นเลขที่ PO ครับ เพราะเจ้าหน้าที่ต้องนำไป upload ขึ้น web ตามเลขที่นั้นๆ ครับ...
ต้องระบุเป็นเลขที่ PO ครับ เพราะเจ้าหน้าที่ต้องนำไป upload ขึ้น web ตามเลขที่นั้นๆ ครับ...
6 @R16948
หลังจากได้ชื่อไฟล์ auto แล้วใช้ VBA ทำการ rename อีกทีได้ไหมครับ
7 @R16952
เป็น แนวคิดที่ดีครับ ผมลอง search ดู แล้ว อาจารย์ TTT เคยตอบเรื่องการเปลี่ยนชื่อไฟล์ไว้อยู่นะครับ
www.thai-access.com/yeadram_view.php?topic_id=3458
ผมจะลองไปปรับใช้ ได้ผลยังไงแล้วจะเข้ามาบอกนะครับ
www.thai-access.com/yeadram_view.php?topic_id=3458
ผมจะลองไปปรับใช้ ได้ผลยังไงแล้วจะเข้ามาบอกนะครับ
Time: 0.2613s
ส่วน bullzip printer รุ่น freeware ดูเหมือนทำได้ แต่ต้องไปศึกษาเองนะครับว่าทำยังไง