อาการ
เมื่อคุณเรียกใช้ Microsoft Visual Basic code ที่ใช้การดำเนินการอัตโนมัติในการควบคุม Microsoft Word คุณอาจได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้:ข้อความแสดงข้อผิดพลาด 1
ข้อผิดพลาดการทำงานอัตโนมัติ '-๒๑๔๗๐๒๓๑๗๔ ' (800706ba) ข้อผิดพลาดการทำงานอัตโนมัติ
ข้อความแสดงข้อผิดพลาด 2
ข้อผิดพลาดขณะเรียกใช้ ' ๔๖๒ ': เครื่องเซิร์ฟเวอร์ระยะไกลไม่มีอยู่หรือไม่พร้อมใช้งาน
สาเหตุ
Visual Basic ได้สร้างการอ้างอิงไปยัง Word เนื่องจากบรรทัดของโค้ดที่เรียกใช้วัตถุวัตถุเมธอดหรือคุณสมบัติโดยไม่มีการกำหนดด้วยตัวแปรวัตถุของ Word Visual Basic ไม่เผยแพร่การอ้างอิงนี้จนกว่าคุณจะจบโปรแกรม การอ้างอิงพเนจรนี้จะรบกวนรหัสการทำงานอัตโนมัติเมื่อโค้ดทำงานมากกว่าหนึ่งครั้ง
การแก้ไข
ปรับเปลี่ยนรหัสเพื่อให้แต่ละการโทรไปยังวัตถุ Word, เมธอดหรือคุณสมบัติมีคุณสมบัติเหมาะสมกับตัวแปรวัตถุที่เหมาะสม
สถานะ
พฤติกรรมเช่นนี้เกิดจากการออกแบบ
ข้อมูลเพิ่มเติม
เมื่อต้องการทำให้ Word เป็นแบบอัตโนมัติคุณจะสร้างตัวแปรวัตถุที่มักจะอ้างอิงไปยังแอปพลิเคชัน Word หรือวัตถุเอกสาร ตัวแปรวัตถุอื่นๆสามารถตั้งค่าให้อ้างอิงไปยังส่วนที่เลือกช่วงหรือวัตถุอื่นๆในรูปแบบวัตถุ Word เมื่อคุณเขียนโค้ดเพื่อใช้ Word object, เมธอดหรือคุณสมบัติคุณควรนำหน้าการโทรด้วยตัวแปรวัตถุที่เหมาะสมเสมอ ถ้าคุณไม่ใช่ Visual Basic จะใช้การอ้างอิงตัวแปรส่วนกลางที่ซ่อนอยู่ซึ่งจะตั้งค่าเป็นอินสแตนซ์ที่กำลังทำงานอยู่ในปัจจุบัน ถ้า Word ถูกปิดใช้งานหรือถ้ามีการเผยแพร่ตัวแปรวัตถุที่ประกาศตัวแปรส่วนกลางที่ซ่อนอยู่จะอ้างอิงวัตถุที่ไม่ถูกต้อง (ถูกทำลาย) เมื่อเรียกใช้รหัสการดำเนินการอัตโนมัติอีกครั้งการโทรไปยังตัวแปรวัตถุที่ซ่อนนี้จะล้มเหลวโดยมีข้อผิดพลาดดังกล่าวข้างต้น ขั้นตอนต่อไปนี้แสดงวิธีการทบทวนเกิดปัญหานี้และวิธีการแก้ไขปัญหา
ขั้นตอนในการทบทวนเกิดลักษณะการทำงาน
-
เริ่มต้นโครงการ EXE มาตรฐานใหม่ใน Visual Basic Form1 จะถูกสร้างขึ้นตามค่าเริ่มต้น
-
คลิกการ อ้างอิง จากเมนู Project จากนั้นคลิกตัวเลือกใดตัวเลือกหนึ่งต่อไปนี้:
-
สำหรับ Office Word ๒๐๐๗ให้คลิก ไลบรารีวัตถุของ Microsoft word ๑๒.๐
-
สำหรับ Word ๒๐๐๓ให้คลิก ไลบรารีวัตถุของ Microsoft Word ๑๑.๐
-
สำหรับ Word ๒๐๐๓ให้คลิก ไลบรารีวัตถุของ Microsoft Word ๑๐.๐
-
สำหรับ Word ๒๐๐๐ให้คลิกไลบรารีวัตถุของ Microsoft Word ๙.๐
-
สำหรับ Word ๙๗ให้คลิกไลบรารีวัตถุของ Microsoft Word ๘.๐
-
-
วาง CommandButton บน Form1
-
คัดลอกโค้ดต่อไปนี้ลงในหน้าต่างรหัสของ Form1:
Option Explicit Private Sub Command1_Click() Dim oWord As Word.Application Dim oDoc As Word.Document Dim oRange as Word.Range Set oWord = CreateObject("Word.Application") With oWord .Visible = True .Activate .WindowState = wdWindowStateNormal End With Set oDoc = oWord.Documents.Add MsgBox "Document open", vbMsgBoxSetForeground With oDoc .PageSetup.LeftMargin = InchesToPoints(1.25) End With ' This example inserts text at the end of section one. Set oRange = ActiveDocument.Sections(1).Range With oRange .MoveEnd Unit:=wdCharacter, Count:= -1 .Collapse Direction:=wdCollapseEnd .InsertParagraphAfter .InsertAfter "End of section." End With With oDoc .Saved = True End With Set oRange = Nothing Set oDoc = Nothing oWord.Quit Set oWord = Nothing End Sub
-
บนเมนู เรียกใช้ ให้คลิก เริ่ม หรือกดแป้น F5 เพื่อเริ่มการทำงานของโปรแกรม
-
คลิก CommandButton ไม่มีข้อผิดพลาดเกิดขึ้น อย่างไรก็ตามการอ้างอิงไปยัง Word ได้ถูกสร้างขึ้นแล้วและยังไม่ได้เผยแพร่
-
คลิก CommandButton อีกครั้งและโปรดทราบว่าคุณได้รับข้อผิดพลาดที่อธิบายไว้ก่อนหน้านี้หมายเหตุ ข้อผิดพลาดเกิดขึ้นเนื่องจากโค้ดอ้างอิงไปยังวิธี InchesToPoints โดยไม่มีการโทรด้วยตัวแปรวัตถุ oWord
-
หยุดโครงการและเปลี่ยนบรรทัดต่อไปนี้:
.PageSetup.LeftMargin = InchesToPoints(1.25)
เพื่อ
.PageSetup.LeftMargin = oWord.InchesToPoints(1.25)
-
เรียกใช้โปรแกรมอีกครั้ง จากนั้นคลิก CommandButton ไม่มีข้อผิดพลาดเกิดขึ้น
-
คลิก CommandButton อีกครั้งและโปรดทราบว่าคุณได้รับข้อผิดพลาดหมายเหตุ ข้อผิดพลาดเกิดขึ้นเนื่องจากโค้ดอ้างอิงไปยังส่วน ActiveDocument ของช่วงของวัตถุที่ไม่มีการโทรที่มีตัวแปรวัตถุ oWord
-
หยุดโครงการและเปลี่ยนบรรทัดต่อไปนี้:
Set oRange = ActiveDocument.Sections(1).Range
เพื่อ
Set oRange = oWord.ActiveDocument.Sections(1).Range
-
เรียกใช้โปรแกรมอีกครั้ง โปรดสังเกตว่าคุณสามารถเรียกใช้โค้ดหลายครั้งได้โดยไม่มีข้อผิดพลาด
เมื่อสร้างโครงการ Visual Basic อัตโนมัติ Word ถ้าโครงการของคุณมีการอ้างอิงไปยังไลบรารีวัตถุของ Microsoft Word โค้ดตัวอย่างสำหรับวัตถุวิธีการและคุณสมบัติของรูปแบบวัตถุ Word จะพร้อมใช้งานจากไฟล์วิธีใช้ Word เมื่อเคอร์เซอร์อยู่เหนือคำสำคัญในโค้ดของคุณคุณจะเห็นข้อความวิธีใช้ที่เกี่ยวข้องโดยการกดแป้น F1 โค้ดตัวอย่างในหัวข้อวิธีใช้จะเป็น Microsoft Word Visual Basic สำหรับรหัสแอปพลิเคชัน จะไม่แสดงการอ้างอิงวัตถุที่จำเป็นต้องใช้โค้ด Visual Basic ของคุณ คุณจะต้องเพิ่มตัวระบุตามความเหมาะสม
อ้างอิง
สำหรับข้อมูลเพิ่มเติมโปรดดูบทความต่อไปนี้ในฐานความรู้ของ Microsoft:
๑๗๘๕๑๐ PRB: วิธีการทำงานอัตโนมัติของ Excel ของวัตถุ ' _Global ' ล้มเหลว
๑๖๗๒๒๓ ไฟล์วิธีใช้ระบบอัตโนมัติของ Microsoft Office ๙๗ที่พร้อมใช้งานสำหรับข้อมูลเพิ่มเติมเกี่ยวกับการทำงานอัตโนมัติของแอปพลิเคชัน Office ให้คลิกหมายเลขบทความด้านล่างนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
๒๒๒๑๐๑ HOWTO: ค้นหาและใช้เอกสารรุ่นวัตถุของ Office