Access2000 ต้องการสั่ง Print เป็น File PDF
กระทู้เก่าบอร์ด อ.Yeadram

 6,995   12
URL.หัวข้อ / URL
Access2000 ต้องการสั่ง Print เป็น File PDF

ปัจจุบันผมใช้ Access 2000 ในการทำงานครับ โดยงานเป็นการทำจดหมายแจ้งลูกค้า โดยปกติ ผมเขียนเป็น VBA สร้าง Form กรอกรายละเอียดแล้วกดปุ่มตกลง ก็จะ ให้ Report สั่ง Print จดหมายออกทางเครื่อง Print ส่วนข้อมูลก็เก็บไว้ใน Table ครับ.... แต่เร็ว ๆ นี้จะเปลี่ยนแจ้งลูกค้าบางส่วน File PDF แล้วแนบผ่าน Mail ไปแทนครับ ไม่ทราบว่าพอจะมี Code หรือ Funtion ที่เขียนลักษณะนี้หรือเปล่าครับ ผมหาแล้วมันไม่เจอ ไปค้นหาในกระทู้เก่า ๆ ก็ยังไม่ตรงกับสิ่งที่ผมต้องการครับ...

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

1 @R01778
ของดีและฟรี ก็มีในโลกนี้เหมือนกัน

http://www.cutepdf.com/Products/CutePDF/writer.asp

จะสร้าง virtual printer ชื่อ CuteWriter ขึ้นมาให้ เวลาพิมพ์ก็สั่งพิมพ์ออกที่มัน แล้วจะแสดงไดอะล็อกซ์ให้เลือกว่าจะเก็บ pdf ลงในโฟลเดอร์อะไร
2 @R01779
แนะนำ PDFCreator ครับ ที่บริษัทฯใช้อยู่
มีให้สั่งพิมพ์ผ่าน Command Line ให้ใช้ด้วย
สั่งให้พิมพ์แล้วส่งผ่านออกอีเมล์เลยก็ได้
กำหนดโฟล์เดอร์เซฟไฟล์ที่พิมพ์เป็นดีฟอล์ทเลยก็ได้
ผมว่าจะลองเขียนให้สั่งพิมพ์ Excel ผ่าน Access ดู
แต่ยังไม่มีเวลา เลยใช้แบบ Manual ไปก่อน
ที่สำคัญ ... ฟรีครับ
3 @R01782
ขอบคุณมากครับ... เดี๋ยวลองไป Download มาใช้ดูก่อน ถ้ามีปัญหาจะเข้ามาขอคำแนะนำใหม่ครับ
4 @R01876
ไปทำตามที่ทุกท่านแนะนำได้แล้วครับ......

แต่มีปัญหาอยู่อีกอย่างหนึ่งครับ เนื่องจากงานที่ทำจะมีทั้งต้อง Print เป็น กระดาษ ออกทางเครื่องพิมพ์ และต้อง Print เป็น File PDF ซึ่งเมื่อลองใช้แล้วจะต้องคอยไปเปลี่ยน Printer ก่อนจะสั่งพิมพ์อยู่ตลอดเนื่องจากข้อมูลลูกค้าที่ได้รับมาจะปนกันอยู่ตลอดระหว่างเป็นกระดาษ กับ File PDF ไม่ทราบว่าพอจะมี Code ที่ถ้าสั่งเป็น PDF จะไปเปลี่ยน Printer ให้อัตโนมัติ หรือเปล่าครับ หรือว่าให้เรียกค่า Printer ให้ Set ก่อนพิมพ์ก็ได้ครับ เพราะทุกวันนี้จะต้องไปที่ Start > Setting>Printer and Fax ตลอดเลยมันทำให้เสียเวลาและเกิดข้อผิดพลาดในการทำงานครับ...
5 @R01878
ถ้าคุณสั่งพิมพ์โดยการกดที่รูป เครื่องพิมพ์ ก็มักจะพิมพ์ออกที่ Default Printer ทำให้ต้องยุ่งยากต่อการไปเปลี่ยน Default Printer ทุกครั้ง   แต่ถ้าคุณสั่งพิมพ์โดยการกดคีย์ Ctrl-P หรือเมนู File > Print ... มันก็จะขึ้นเป็น Printer Dialog เพื่อให้เลือกเครื่องพิมพ์ที่จะพิมพ์แทนครับ ทำให้ง่ายต่อการเลือกเครื่องพิมพ์มากกว่าการเปลี่ยน Defualt Printer

อย่างไรก็ตาม มันขึ้นกับ Application นั้นๆว่าออกแบบมาอย่างไรนะครับ ที่ผมบอกไป ไม่ตายตัว
6 @R01880
ขอบคุณครับ คุณสันติสุข พอดีว่า Application ที่ได้สร้างขึ้นมาเมื่อใส่ข้อมูลครบแล้ว กด Enter ระบบจะทำการ Save แล้ว Print ให้ทันทีครับ ตอนนี้ที่ผมคิดแก้ไขในระยะสั้นก็คือเมื่อเขียน Code ให้ Save แล้วให้ไปตรวจสอบค่า ChackBox ว่าติ๊กให้เป็น Pdf หรือไม่ในกรณีใช่ให้ทำการ Load Printer ขึ้นมาเพื่อให้ Set Printer ก่อน ครับ แต่ประเด็นคือไม่รู้ว่าจะเขียน Code ด้วยคำสั่งอะไรเพื่อให้ Printer ขึ้นมาครับ...
7 @R01881
ไม่ทราบว่าในเครื่อง มี comdlg32.ocx หรือเปล่าครับ ดูใน c:\windows\system32 ครับ

ถ้ามีนะครับ ใช้ตัวนี้แหละครับ ง่ายดี
เปิดฟอร์มในมุมมองออกแบบ สั่งโชว์ toolbar "เครื่องมือ"
ตรงไอคอนทีเป็นรูปฆ้อนไขว้กันอยู่ (more controls) ให้คลิ๊กแล้วเลื่อนหา
Microsoft common dialog control (sp6)
ลองศึกษาการใช้ตาม google ได้ครับ ถ้าใช้ได้คล่อง มันมีประโยชน์มากนะครับ

- showopen ไว้ค้นหาและเลือกไฟล์จากในเครื่องของเรา
- showsave ไว้ระบุพาธ ที่จะเซฟไฟล์
- showcolor ไว้เลือกสี จาก system palace
- showprinter ไว้เลือก เครื่องปริ๊นท์เวลาจะปริ๊นท์

เวลาผมโค้ด เพื่อให้โปรแกรมค้นหาไฟล์ หรือค้นหาตำแหน่งที่จะเซฟไฟล์ export ผมใช้ตัวนี้แหละครับ ได้ทุกงาน เมื่อกี้ลองใช้คำสั่ง showprinter ดู มันก็น่าจะได้ตามที่คุณต้องการนะครับ
มีใน google หลายหน้ามากครับ สอนวิธีใช้ วิธีวางคำสั่ง มันเป็นคอนโทรลที่ไม่มีรูปร่างเวลาแสดงผล (หมายความว่าอยากวางตรงไหนก็ได้ เพราะมันไม่บังคอนโทรลตัวอื่นๆ)

ผมเห็นหลายกระทู้หลายความเห็นที่พากันไปเอาโค้ด หรือพากันเขียนโค้ดขึ้นใหม่ เพื่อจะ browse file ผมอยากแนะนำจังว่า ทำไมไม่เอา คอมโพเน้นท์ตัวนี้มาใช้กัน แต่กลัวว่าจะเขียนยาวแล้วปัญหาตามมาเยอะเนื่องจาก ผู้ใช้บางรายไม่ได้ติดตั้ง vb6 อย่างผม หลายๆ คอมโพเน้นท์จึงหาใช้ไม่ค่อยได้

ถ้าเกิดว่าสนใจอยากลองใช้ คอมโพเน้นท์ตัวนี้ แล้วไปหาที่เครื่องไม่เจอ ขอมาได้นะครับ เดี๋ยวส่งให้ // ผมไม่แน่ใจว่า คอมโพเนนท์ตัวนี้แถมมากับ window หรือ office หรือ vb6 กันแน่เหมือนกันครับ


รูปตัวอย่างนี้เพื่อให้นึกภาพออกเท่านั้นนะครับ เวลาใช้จริงอาจต้องปรับแต่งพวก properties อีกนิดหน่อย และวางคำสั่งเพิ่มเติมอีกหน่อยครับ
8 @R01882
ทำอย่างง่ายๆครับ

DoCmd.OpenReport "ชื่อรายงาน", acViewPreview
SendKeys "^p", True

แค่นี้มันก็จะเปิด Print Dialog ครับ
9 @R01883
ขอบคุณสำหรับคำแนะนำครับ คุณ yeadram เครื่องผมมี comdlg32.ocx ครับ
เดี๋ยวจะลองทำดูตามคุณ yeadram และ คุณสันติสุข ส่วนได้ผลอย่างไรจะแจ้งให้ทราบครับ...


10 @R01889
คุณ yeadram เครื่องผมมี comdlg32.ocx แต่ผมทำตามที่คุณบอกแต่ไม่เจอตัว
Microsoft common dialog control (sp6) ครับ...

คุณสันติสุข ผมลองใส่ Code ตามนี้
DoCmd.OpenReport "R_Letter_O_PLPS", acViewNormal,Sendkeys ^P, "ID='" & Txtid.Value & "'" พอ Run ดูมันขึ้น Compile Error ครับ ส่วนถ้าใส่ "^p" แบบนี้มันแจ้งว่า code ผิดครับ...

11 @R01891
ที่ให้ไป มัน 2 คำสั่งครับ 2 บรรทัดครับ ไม่ใช่คำสั่งเดียว อย่าเอามาเขียนติดกัน
12 @R01892
คุณ yeadram ผมลืมลงทะเบียนกับตัว OS ก่อน เลยมองไม่เห็น ตอนนี้ขึ้นแล้วจะลอง Code ดูครับ

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