กระทู้เก่าบอร์ด อ.Yeadram
1,273 10
URL.หัวข้อ /
URL
Export Report to PDF
รบกวนอาจารย์ ทุกท่าน ค่ะ สอบถามการ export Report to PDF ตอนนี้ใช้โค้ด นี้ อยู่ค่ะเอามาจากกระทู้ของอาจารย์ท่านนึงDim rpName As String
rpName = "rpMovement"
' สั่งเปิดรายงานเพื่อระบุเครื่องพิมพ์
DoCmd.OpenReport rpName, acViewDesign, , , acHidden
' ค้นหาเครื่องพิมพ์ที่ต้องการ
Dim prtLoop, prtSet As Printer
For Each prtLoop In Application.Printers
If prtLoop.DeviceName Like "*PDF*" Then Set prtSet = prtLoop
Next
' กำหนดเครื่องพิมพ์ที่ได้ให้เป็นเครืองพิมพ์ประจำของรายงานนั้น
Dim myRpt As Report
Set myRpt = Reports(rpName)
myRpt.Printer = prtSet
' สั่งปริ๊นท์รายงาน
DoCmd.OpenReport rpName, acViewNormal
' ระบุชื่อไฟล์และพาธสำหรับ PDF ปลายทาง
Dim PdfFileName As String
PdfFileName = "c:\documents and settings\all users\desktop\" & rpName & Format(Now(), "ddmmyyyyhhmmss")
SendKeys PdfFileName
SendKeys "{ENTER}"
' สั่งปิดรายงานและล้างหน่วยความจำ
Set myRpt = Nothing
Set prtSet = Nothing
DoCmd.Close acReport, rpName, acSaveNo
แต่ทีนี้ มันจะเป็นการเลือกเครื่องปริ้น ที่เป็น ไฟล์ PDF และจะต้องตั้งdefault เป็น ปริ้น PDF และจะติดปัญหาตรง เวลาจะปริ้นงานอื่นจะต้องมาเลือกเครื่องใหม่
อยากทราบวิธีการ export Report to PDF แบบไม่ต้องตั้งค่า default ที่เครื่องปริ้นค่ะ พอมีวิธีมั้ยค่ะ
ขอบคุณ ค่ะ
rpName = "rpMovement"
' สั่งเปิดรายงานเพื่อระบุเครื่องพิมพ์
DoCmd.OpenReport rpName, acViewDesign, , , acHidden
' ค้นหาเครื่องพิมพ์ที่ต้องการ
Dim prtLoop, prtSet As Printer
For Each prtLoop In Application.Printers
If prtLoop.DeviceName Like "*PDF*" Then Set prtSet = prtLoop
Next
' กำหนดเครื่องพิมพ์ที่ได้ให้เป็นเครืองพิมพ์ประจำของรายงานนั้น
Dim myRpt As Report
Set myRpt = Reports(rpName)
myRpt.Printer = prtSet
' สั่งปริ๊นท์รายงาน
DoCmd.OpenReport rpName, acViewNormal
' ระบุชื่อไฟล์และพาธสำหรับ PDF ปลายทาง
Dim PdfFileName As String
PdfFileName = "c:\documents and settings\all users\desktop\" & rpName & Format(Now(), "ddmmyyyyhhmmss")
SendKeys PdfFileName
SendKeys "{ENTER}"
' สั่งปิดรายงานและล้างหน่วยความจำ
Set myRpt = Nothing
Set prtSet = Nothing
DoCmd.Close acReport, rpName, acSaveNo
แต่ทีนี้ มันจะเป็นการเลือกเครื่องปริ้น ที่เป็น ไฟล์ PDF และจะต้องตั้งdefault เป็น ปริ้น PDF และจะติดปัญหาตรง เวลาจะปริ้นงานอื่นจะต้องมาเลือกเครื่องใหม่
อยากทราบวิธีการ export Report to PDF แบบไม่ต้องตั้งค่า default ที่เครื่องปริ้นค่ะ พอมีวิธีมั้ยค่ะ
ขอบคุณ ค่ะ
10 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R23673
ลองดูแล้วค่ะ แต่มันจะติด Error ตรงนี้ตลอดเลย
แล้วลองใช้โค้ด แบบว่าให้เวลาเรากดปุ่ม ปริ้น PDF ไฟล์จะบันทึก อันโนมัติ
Private Sub Create_PDF_Click()
Dim myPath As String
Dim strReportName As String
DoCmd.OpenReport "Invoices", acViewPreview
myPath = "C:\Documents and Settings\"
strReportName = Report_Invoices.[Client Organisations_Code] + "-" +
Report_Invoices.Clients_Code + "-" + Report_Invoices.Invoices_Code + "-" +
Format(Report_Invoices.[Invoice Date], "yyyy") + ".pdf"
DoCmd.OutputTo acOutputReport, "", acFormatPDF, myPath + strReportName, True
DoCmd.Close acReport, "Invoices"
End Sub
มันก็จะมาติด Error ตรง DoCmd.OutputTo ตลอดเลยค่ะ

ลองดูแล้วค่ะ แต่มันจะติด Error ตรงนี้ตลอดเลย
แล้วลองใช้โค้ด แบบว่าให้เวลาเรากดปุ่ม ปริ้น PDF ไฟล์จะบันทึก อันโนมัติ
Private Sub Create_PDF_Click()
Dim myPath As String
Dim strReportName As String
DoCmd.OpenReport "Invoices", acViewPreview
myPath = "C:\Documents and Settings\"
strReportName = Report_Invoices.[Client Organisations_Code] + "-" +
Report_Invoices.Clients_Code + "-" + Report_Invoices.Invoices_Code + "-" +
Format(Report_Invoices.[Invoice Date], "yyyy") + ".pdf"
DoCmd.OutputTo acOutputReport, "", acFormatPDF, myPath + strReportName, True
DoCmd.Close acReport, "Invoices"
End Sub
มันก็จะมาติด Error ตรง DoCmd.OutputTo ตลอดเลยค่ะ
3 @R23674
the format which you are attempting to output the current object is not available
Error ที่แจ้งเตื่อน ค่ะ
Error ที่แจ้งเตื่อน ค่ะ
4 @R23675
ถ้าเป็น Access 2007 ให้ลองติดตั้งตัวนี้ดูครับ
https://www.microsoft.com/th-th/download/details.aspx?id=7
https://www.microsoft.com/th-th/download/details.aspx?id=7
5 @R23678
ได้แล้วค่ะ ขอบคุณนะคะ อาจารย์
สอบถามอีกนิดค่ะ ถ้าเราจะตั้งชื่อ Filename จากเลขเอกสารที่รันอยู่ใน Report สามารถตั้งได้มั้ยค่ะ
สอบถามอีกนิดค่ะ ถ้าเราจะตั้งชื่อ Filename จากเลขเอกสารที่รันอยู่ใน Report สามารถตั้งได้มั้ยค่ะ
6 @R23679
"เลขเอกสารที่รันอยู่ใน Report " ... ไม่แน่ใจว่าหมายถึงอะไร แต่ถ้าเลขนั้นได้มาจากเทเบิลและเรารู้เงื่อนไขที่ชี้ชัดได้ว่าจะเอามาจากเรคอร์ดอะไร เราก็สามารถอ่านเลขนั้น ก่อนที่จะเปิดรายงานได้นี่ครับ จะด้วยการใช้คำสั่ง DLookup หรือ OpenRecordset ที่ระบุเงื่อนไขนั้นก็ได้ครับ
7 @R23697
ลิ้งที่อาจารย์ให้มา มีตัวที่ EXPORT เป็น Excel มั้ยค่ะ
8 @R23698
เปลี่ยนจาก acFormatPDF เป็น acFormatXLS เท่านั้นเองครับ
9 @R23699
ลองเเปลี่ยนแล้วค่ะ มันฟ้อง error '2282 the format which you are attempting to output the current object is not available เหมือนตอนแรกคะ
10 @R23700
ไมโครซอฟ์ทบอกให้ติดตั้ง Microsoft Office 2007 Service Pack 2 ครับ
https://support.microsoft.com/en-us/help/934833/unless-you-install-the-office-2007-suite-service-pack-2,-you-cannot-ex
ยังไงก็ตาม การแปลงจาก Report ไปเป็น Excel ไม่น่าใช่รูปแบบที่เหมาะสมครับ เพราะข้อมูลอาจไปแปะลงใน cell ที่อยู่ไม่ตรงกับที่แสดงใน Report และผมก็คิดว่ามันยากที่จะทำให้ตรงกันด้วย สิ่งที่น่าจะเป็นคือเลือกเอาเฉพาะข้อมูลที่เราต้องการ โดยสร้างเป็น Query แล้วจึงส่งออกจาก Query ไปเป็น Excel ดูจะเหมาะสมมากกว่าครับ
https://support.microsoft.com/en-us/help/934833/unless-you-install-the-office-2007-suite-service-pack-2,-you-cannot-ex
ยังไงก็ตาม การแปลงจาก Report ไปเป็น Excel ไม่น่าใช่รูปแบบที่เหมาะสมครับ เพราะข้อมูลอาจไปแปะลงใน cell ที่อยู่ไม่ตรงกับที่แสดงใน Report และผมก็คิดว่ามันยากที่จะทำให้ตรงกันด้วย สิ่งที่น่าจะเป็นคือเลือกเอาเฉพาะข้อมูลที่เราต้องการ โดยสร้างเป็น Query แล้วจึงส่งออกจาก Query ไปเป็น Excel ดูจะเหมาะสมมากกว่าครับ
Time: 2.5864s
DoCmd.OutputTo acOutputReport, rpName, acFormatPDF, PdfFileName