:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

wdDoc.PrintPreview

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
Bafnet
Member
Member
Posts: 167
Joined: Thu Jun 09, 2011 11:52 pm

wdDoc.PrintPreview

#1

Post by Bafnet »

สวัสดีครับอาจารย์
มีเรื่องรบกวนหน่อยนะครับ
ผมเขียนคำสั่งพิมพ์ Word ดังนี้ครับ

Code: Select all

Private Sub CommandButton2_Click()
Dim wx As Variant
Dim wdApp As Word.Application
Dim wdDoc As Word.Document
Dim r As Integer
On Error Resume Next

If ComboBox1.Value = "statement 301" Then 
Set wdApp = New Word.Application
wdApp.Visible = True
Set wdDoc = wdApp.Documents.Open("C:\CIM360\Doc\D1\301_02_01.doc")
wdApp.PrintOut Filename:="", Range:=wdPrintRangeOfPages, Copies:=1, Pages:="1-3"
wdApp.Quit True
Set wdApp = Nothing
End If
End Sub
ซึ่งไม่มีปัญหาอะไรครับ แต่ที่อยากรบกวนคือผมอยากให้เปลี่ยนจากพิมพ์ เป็นการ PrintPreview
ได้ทดลองเขียนแบบนี้

Code: Select all

Private Sub CommandButton2_Click()
Dim wx As Variant
Dim wdApp As Word.Application
Dim wdDoc As Word.Document
Dim r As Integer
On Error Resume Next

If ComboBox1.Value = "statement" Then 
Set wdApp = New Word.Application
wdApp.Visible = True
Set wdDoc = wdApp.Documents.Open("C:\CIM360\Doc\D1\301_02_01.doc")
frmdocument.Hide 
wdDoc.PrintPreview
wdApp.Quit True
Set wdApp = Nothing
frmdocument.Show
End If
End Sub
ปรากฏว่าดูจากการทำงาน มันทำงานครับ แต่เปิดแล้วก็ปิดเลย ไม่ Active ไปที่หน้า PrintPreview
เลยทดสอบโดยเอาคำสั่ง
wdApp.Quit True
Set wdApp = Nothing
ออกไป
ปรากฏว่า มันทำงานครับแต่ไม่ Active ไปที่หน้า PrintPreview ต้องเอาเมาส์ไปคลิ๊กที่ Word ที่เมนูบาร์เอง
แต่พอปิดหน้า PrintPreview ปรากฏว่า Word ที่สั่งเปิดก็ยังอยู่ ต้องปิดเองอีกครับ

รบกวนแนะนำหน่อยครับว่าจะแก้ไขอย่างไร ให้ Word ที่เราสั่งเปิด window Active ไปหน้า PrintPreview เพื่อให้ผู้ใช้งานตรวจดูเอกสารก่อนว่าเอกสารที่เลือกถูกต้องรึเปล่า
พอปิดหน้า PrintPreview ก็จะปิด word ที่เปิด พร้อมกลับสู่หน้า USER FORM(frmdocument.Show) ของโปรแกรมเราต่อครับ
:roll:
ขอบคุณมากครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30919
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: wdDoc.PrintPreview

#2

Post by snasui »

:D ลองปรับ Code เป็นตามด้านล่างครับ

Code: Select all

Private Sub CommandButton2_Click()
    Dim wx As Variant
    Dim wdApp As Word.Application
    Dim wdDoc As Word.Document
    Dim r As Integer
    On Error Resume Next
    
    If ComboBox1.Value = "statement" Then
        Set wdApp = New Word.Application
        wdApp.Visible = True
        wdApp.Activate
        Set wdDoc = wdApp.Documents.Open("C:\CIM360\Doc\D1\301_02_01.doc")
        frmdocument.Hide
        wdDoc.PrintPreview
        Do While wdApp.PrintPreview = True
        Loop
        wdApp.Quit True
        Set wdApp = Nothing
        frmdocument.Show
    End If
End Sub
Bafnet
Member
Member
Posts: 167
Joined: Thu Jun 09, 2011 11:52 pm

Re: wdDoc.PrintPreview

#3

Post by Bafnet »

ขอบคุณมากๆครับอาจารย์
ต้องขอโทษด้วยครับ ที่เข้ามาดูคำตอบช้า ผมพึ่งกลับจากทำงาน
ขอบคุณมากจริงๆครับ :cp:
ขอเรียนถามอาจารย์หน่อยนะครับ เพราะเป็นสิ่งที่ผมคาดไม่ถึง

Do While wdApp.PrintPreview = True
Loop

มันเป็นคำสั่งให้ทำซ้ำๆ Loop จนกระทั่ง...

อธิบายให้ผมสักนิดนะครับ เพื่อจะได้ความรู้เพิ่มขึ้น
ว่าคำสั่งดังกล่าวมันเกี่ยวข้องกับการ Print Preview กันได้อย่างไร

ปกติที่ผมใช้
r=2
Do Until Sheet11.Cell....
Do While Sheet11.Cell....

แต่กรณีนี้นึกไม่ถึงว่าไฉนเลยคำเฉลยจึงไปเกี่ยวข้องกับการ Loop
:roll:
User avatar
snasui
Site Admin
Site Admin
Posts: 30919
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: wdDoc.PrintPreview

#4

Post by snasui »

:D เป็นการ Loop ให้เช็คว่ามีการ Print Preview อยู่หรือไม่ ถ้าใช่ก็ให้ Loop เช็คอยู่เช่นนั้นจนกว่าจะมีการปิด Print Preview ไปจึงจะทำงานตาม Code อื่น ๆ ต่อไปครับ
Bafnet
Member
Member
Posts: 167
Joined: Thu Jun 09, 2011 11:52 pm

Re: wdDoc.PrintPreview

#5

Post by Bafnet »

ขอบคุณมากๆครับ
ทำให้เข้าใจขึ้นอีกระดับหนึ่ง
ว่าคำสั่งชุดหนึ่งนั้น จะมองการนำไปใช้งานเพียงมิติเดียวไม่ได้
มันคงคล้ายกับตัวต่อเลโก้ ชิ้นหนึ่งๆสามารถ Apply ได้ในหลายรูปแบบ
ขอบคุรมากๆครับ ทุกครั้งที่มีปัญหา ที่นี่มีคำตอบให้เสมอ
ปัญหามา ปัญญาเกิด ขอบคุณครับ
:lol:
Post Reply