ต้องการพิมพ์รายงานบนซองจดหมายค่ะ
กระทู้เก่าบอร์ด อ.Yeadram

 1,147   5
URL.หัวข้อ / URL
ต้องการพิมพ์รายงานบนซองจดหมายค่ะ

รบกวนสอบถามวิธีออกแบบรายงานให้พิมพ์ข้อมูลรายชื่อลูกค้าลงบนซองจดหมายค่ะ
ลองวัดขนาดของซองจดหมายได้ ประมาณ 11 x 22 cm
ตอนนี้ได้ออกแบบรายงานไว้ โดยกำหนดขนาดให้พอดีกับขนาดซองดังกล่าว

ปัญหาก็คือ ในบางเครื่องก็ไม่มีตัวเลือก ให้เลือกขนาดดังกล่าว

ขอเรียนสอบถามว่า เราจะกำหนดขนาดหน้ากระดาษให้กับรายงานนี้
แบบตายตัวไปเลยได้ไหมคะ แบบว่า เมื่อสั่งพิมพ์ ก็พิมพ์ด้วยขนาดที่กำหนด
ได้เลย ไม่ว่าจะไปใช้กับเครื่องไหนก็ตาม

ในบางเครื่อง พยายามเลือกหาขนาดกระดาษดังกล่าวหรือใกล้เคียงก็ไม่เห็นมี
ขนาดสำเร็จรูปอื่นๆ ที่พอเหมาะกับซองจดหมายดังกล่าว
พอจะใช้ขนาดไหนได้บ้างคะ หรือต้องปรับเปลี่ยนออกแบบรายงานใหม่


5 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R23940
2 @R23943
หมายความว่าเราต้องไปตั้งค่าในทุกๆเครื่องที่จะใช้งานใช่ไหมคะ
แล้วเราพอจะมีวิธีใช้โค๊ดคำสั่งอะไรให้เข้าไปกำหนดค่าตามที่ต้องการ
จากโปรแกรมของเราได้บ้างไหมคะ แบบว่าพอคลิกสั่งปรินท์รายงาน
ก็ให้ไปกำหนดค่าหน้ากระดาษตามที่ต้องการด้วยเลย
3 @R23945
ถ้าเช็คจากค่าคงที่ของขนาดกระดาษที่ vba มีให้ตาม https://msdn.microsoft.com/en-us/vba/access-vba/articles/acprintpapersize-enumeration-access จะเห็นได้ว่ากระดาษที่ชื่อ Envelope DL ที่มีค่าเป็น 27 จะมีขนาดเดียวกันกับที่ต้องการเลยครับ ใน Access บนเครื่องผมก็มีขนาดกระดาษอันนี้ ตอนที่อยู่ใน Report Design View ก็เลือก Page Setup ก็จะเห็น Paper Size ชื่อว่า DL Env. (คิดว่าอันเดียวกันครับ) ก็ไม่ต้องเขียนโปรแกรมอะไรเลยครับ กำหนดไปพร้อมกับตัวรายงานได้เลย
4 @R23947
ใช้ฟังก์ชั่นประมาณนี้ได้หรือเปล่าครับ

Function rpt_Printing(ReportName As String, Optional PrinterName As String) As Boolean
    Dim oPrinter As Printer
    ' กำหนดชื่อเครื่องพิมพ์เป้าหมาย
    If PrinterName & "" = "" Then
        Set oPrinter = Application.Printers(Application.Printer.DeviceName)
    Else
        Set oPrinter = Application.Printers(PrinterName)
    End If
    ' กำหนดคุณสมบัติของเครื่องพิมพ์
    With oPrinter
        .PaperSize = acPRPSEnvDL ' ขนาดกระดาษที่ อ.สันติสุข แนะนำ
' คุณสมบัติอื่นๆ หากต้องการกำหนด มีอีกมาก ศึกษาดูครับ
'        .TopMargin = 1440
'        .BottomMargin = 1440
'        .LeftMargin = 1440
'        .RightMargin = 1440
    End With
    With DoCmd
        .OpenReport ReportName, acViewPreview
        Reports(ReportName).Printer = oPrinter ' เลือกเครื่องพิมพ์ที่ถูกแก้ไขคุณสมบัติให้มาใช้กับรายงาน
        .PrintOut ' สั่งพิมพ์
        .Close acReport, ReportName
    End With
End Function


rpt_Printing("ชื่อรายงานเป้าหมาย", "ชื่อเครื่องพิมพ์ หากไม่ต้องการ Default")


สั่งพิมพ์ที่รายงานชื่อ Report1
rpt_Printing "Report1"
หรือ สั่งพิมพ์ที่รายงานชื่อ Report1 เครื่องพิมพ์ชื่อ Microsoft Print to PDF
rpt_Printing "Report1", "Microsoft Print to PDF"

อะไรประมาณนี้ ปรับใช้ดูครับ
5 @R23949
ใช้ได้แล้วค่ะ กำหนดค่าเป็น Envelope DL 27 ตามที่อ.สันติสุขแนะนำ
อีกอันที่เป็น Envelope italy 36 ก็ใช้ได้เช่นกัน แต่เลือกใช้ Envelope DL ค่ะ
ขอขอคุณอาจารย์ทั้งสองท่านนะคะ ตอนนี้ได้ตามที่ต้องการแล้วค่ะ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3040s