Page 1 of 1

pdf และคำสั่งบันทึกเป็น Pdf

Posted: Fri Aug 26, 2011 8:15 pm
by Bafnet
สวัสดีครับอาจารย์
วันนี้ขออนุญาตเปิดกระทู้ใหม่เผื่อเพื่อนๆที่มีความสนใจเช่นเดียวกัน

การสั่งพิมพ์ไฟล์ Word

Code: Select all

Sub Prword
Set wdApp = New Word.Application
wdApp.Visible = True
Set wdDoc = wdApp.Documents.Open("C:\Program Files\DumP\DATA\doc\คำขอไถ่ถอน.doc")
wdApp.Activate
Set wdApp = Nothing
End sub
ผมปรับจาก wdApp.PrintOut เป็น wdApp.Activate
เพราะเนื่องจากปัญหาที่ไม่สามารถลบหน้าว่างในเวิร์ดที่ไม่ต้องการได้ เลยให้ผู้ใช้เลืกพิมพ์จากเวิร์ดที่ Activateโดยตรง

อาจารย์ครับแล้วถ้าสั่งพิมพ์ไฟล์ Pdf เขียนคำสั่งอย่างไรครับ และการตั้งค่า References ต้องเลือกตัวไหนครับ
ผมเข้าไปดู เห็นมีอยู่ 4-5 ตัว :roll:

Re: pdf และคำสั่งบันทึกเป็น Pdf

Posted: Fri Aug 26, 2011 9:03 pm
by snasui
Bafnet wrote: อาจารย์ครับแล้วถ้าสั่งพิมพ์ไฟล์ Pdf เขียนคำสั่งอย่างไรครับ และการตั้งค่า References ต้องเลือกตัวไหนครับ
ผมเข้าไปดู เห็นมีอยู่ 4-5 ตัว
:D อ่านแล้วยังไม่เคลียร์ครับ สั่งพิมพ์จาก Word Version ไหนครับเห็นไฟล์เป็นนามสกุล .doc สำหรับการสั่งพิมพ์เป็น PDF นั้นสามารถทำได้ 3 แบบเป็นอย่างน้อย

1. ใช้ Word 2007 และใช้ Add-ins มาช่วย จะสั่ง Save เป็น PDF ได้เลย
2. ใช้ Word 2010 สามารถ Save เป็น PDF ได้เลย
3. ใช้ Word 2003 ต้องลงโปรแกรมเสริมเช่น PDF Editor และ Print ผ่าน Driver ของโปรแกรมพวกนี้ก็จะได้ไฟล์ PDF

การตั้งค่า References ปกติจะเป็นการเรียกใช้ Object ต่าง ๆ ของโปรแกรมอื่น หากต้องการเรียกใช้ Object ของโปรแกรมที่เกี่ยวกับ PDF ใดก็เลือกตัวนั้นครับ

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

Re: pdf และคำสั่งบันทึกเป็น Pdf

Posted: Fri Aug 26, 2011 11:18 pm
by Bafnet
สวัสดีครับ
snasui wrote:จากที่เล่ามาเมื่อให้ผู้ใช้เลือกพิมพ์เองแล้วไม่ทราบว่าต้องการเขียน Code ให้พิมพ์เองจังหวะไหน หรือว่าเป็นคนละคำถามแยกจากกัน
งานที่กำลังทำอยู่ มีเมนูสำหรับจัดทำสัญญาเงินกู้ ซึ่งเมื่อก่อนผมต้องนั่งสร้างเอกสารใหม่ใน Excell ทั้งเอกสาร
ก็เลยคิดว่าถ้าสั่งพิมพ์ เอกสาร Word ได้ คงไม่ต้องมานั่งสร้างเอกสารใหม่ใน Excel
คือมี comboBox รายชื่อเอกสาร ผู้ใช้เลือกอยากได้เอกสารการกู้ใดๆก็สั่งพิมพ์จากปุ่มคำสั่งได้เลย
แต่ติดปัญหาที่ว่า เอกสาร Word มีหน้าที่ไม่ต้องการอยู่ ซึ่งผมพยายามลบเนื้อหาจนเป็นหน้าว่างเปล่า
แต่จำนวนหน้าเอกสารก็ไม่ลดลง พอPrintPreview หน้าว่างก็ยังคงปรากฎซึ่งผมก็ไม่เข้าใจ Word
จะกำหนดพื้นที่พิมพ์เหมือนในเอ็กเซลก็หาไม่เจอ ครั้นจะสั่งPrintOut ก็จะได้หน้าที่ไม่ต้องการมาด้วย
เมื่อคืนพยายามนั่งปรับเปลี่ยนทั้ง

Code: Select all

Set wdDoc = wdApp.Documents.Open("C:\Program Files\DumP\DATA\doc\คำขอไถ่ถอน.doc")
wdApp.PrintPreview
ก็ไม่สำเร็จ ยอมรับครับว่าพอไปใช้ Activate ดูจะวุ่นวายกับผู้ใช้ เพราะไม่สามารถจบงานได้ในจุดเดียว
โดยเฉพาะผู้ใช้ที่มีอายุ
หากระบุหน้าที่จะพิมพ์ได้ หรืออย่างน้อยก็โชว์หน้าPrintPreview ก็คงดี

ส่วนเรื่อง Pdf ผมคงอธิบายผิดไป ความต้องการคือลักษณะเดียวกันกับการสั่งพิมพ์ Word ครับ
เช่นมี Test.pdf ที่ตำแน่ง("C:\Program Files\DumP\DATA\doc\คำขอไถ่ถอน.doc")
แล้วต้องการสั่งพิมพ์
(ไม่ใช่สั่งพิมพ์ excell เป็นPdf ครับ)
ที่ต้องการคำสั่งนี้เพราะปัจจุบันธนาคารเริ่มจัดทำและจัดเก็บเอกสารในรูปแบบสกุล.pdf

ขอบคุณครับ อาจารย์ช่วยปรับเพิ่มให้หน่อยได้ไหมครับ :roll:

Re: pdf และคำสั่งบันทึกเป็น Pdf

Posted: Fri Aug 26, 2011 11:21 pm
by Bafnet
Bafnet wrote:เช่นมี Test.pdf ที่ตำแน่ง("C:\Program Files\DumP\DATA\doc\คำขอไถ่ถอน.doc")
แก้ไขตำแหน่ง"C:\Program Files\DumP\DATA\doc\Test.pdf"
ขอบคุณครับ

Re: pdf และคำสั่งบันทึกเป็น Pdf

Posted: Fri Aug 26, 2011 11:40 pm
by Bafnet
snasui wrote:สั่งพิมพ์จาก Word Version ไหนครับเห็นไฟล์เป็นนามสกุล .doc
ลืมชี้แจงครับขออภัย
2003 ครับ เอกสารที่โหลดจากธนาคารเป็น 2003 ครับ
เมื่อคืนลอง Save As เป็น docx มันก็บอกว่า
1.รุ่นเก่า โครงสร้างเอกสารอาจเปลี่ยนแปลง
2.ไม่สามารถบันทึกเอกสารที่มีโครงการ VB ได้ ต้องเป็น .docm
3.แปลงแล้วรูปแบบเอกสารเพี้ยนครับ
เลยต้องคงเป็น.doc
Bafnet wrote:หากระบุหน้าที่จะพิมพ์ได้ หรืออย่างน้อยก็โชว์หน้าPrintPreview ก็คงดี
Bafnet wrote:ส่วนเรื่อง Pdf ผมคงอธิบายผิดไป ความต้องการคือลักษณะเดียวกันกับการสั่งพิมพ์ Word ครับ
เช่นมี Test.pdf ที่ตำแน่ง("C:\Program Files\DumP\DATA\doc\คำขอไถ่ถอน.doc")
แล้วต้องการสั่งพิมพ์
(ไม่ใช่สั่งพิมพ์ excell เป็นPdf ครับ)
ที่ต้องการคำสั่งนี้เพราะปัจจุบันธนาคารเริ่มจัดทำและจัดเก็บเอกสารในรูปแบบสกุล.pdf
x.jpg

Re: pdf และคำสั่งบันทึกเป็น Pdf

Posted: Sat Aug 27, 2011 6:25 am
by snasui
Bafnet wrote:แต่ติดปัญหาที่ว่า เอกสาร Word มีหน้าที่ไม่ต้องการอยู่ ซึ่งผมพยายามลบเนื้อหาจนเป็นหน้าว่างเปล่า
แต่จำนวนหน้าเอกสารก็ไม่ลดลง พอPrintPreview หน้าว่างก็ยังคงปรากฎซึ่งผมก็ไม่เข้าใจ Word
จะกำหนดพื้นที่พิมพ์เหมือนในเอ็กเซลก็หาไม่เจอ ครั้นจะสั่งPrintOut ก็จะได้หน้าที่ไม่ต้องการมาด้วย
ตัวอย่าง Code ด้านล่างเป็นการสั่งให้พิมพ์เฉพาะหน้าที่ต้องการครับ ลองประยุกต์ใช้ดูครับ

Code: Select all

Sub OpenWordPrintAndClose()
Dim wdApp As Word.Application
Dim wdDoc As Word.Document
Set wdApp = New Word.Application
wdApp.Visible = True
Set wdDoc = wdApp.Documents.Open("D:\Test.doc")
wdApp.PrintOut Filename:="", Range:=wdPrintRangeOfPages, Copies:=1, Pages:="1,3-6,9-11"
wdApp.Quit
Set wdApp = Nothing
End Sub
สำหรับการสั่ง Print PDF โดย VBA ผ่านโปรแกรม PDF ดูตัวอย่างที่นี่ครับ http://cuisine-america.com/software-ame ... -File.html