อาการ
ในขณะที่กำลังเรียกใช้โค้ดที่ใช้ทำงานอัตโนมัติเพื่อควบคุม Microsoft Excel หนึ่งข้อผิดพลาดต่อไปนี้อาจเกิดขึ้นได้:
ใน Microsoft Excel 97 และรุ่นที่ใหม่กว่าของ Excel คุณได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้:
ข้อความแสดงข้อผิดพลาด 1
ข้อผิดพลาดขณะทำงาน '1004':
เมธอด '<ชื่อของเมธอด >' ของวัตถุ '_Global' ล้มเหลว
ข้อความแสดงข้อผิดพลาด 2
ข้อผิดพลาดโปรแกรมประยุกต์กำหนด หรือวัตถุกำหนด
ใน Microsoft Excel 95 คุณได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้:
ข้อความแสดงข้อผิดพลาด 1
ข้อผิดพลาดรันไทม์ '-2147023174'
ข้อผิดพลาดในการทำงานอัตโนมัติของ OLE
ข้อความแสดงข้อผิดพลาด 2
ข้อผิดพลาดรันไทม์ '462':
เครื่องเซิร์ฟเวอร์ระยะไกลไม่มีอยู่ หรือไม่พร้อมใช้งาน
สาเหตุ
Visual Basic ได้สร้างการอ้างอิงไปยัง Excel ได้เนื่องจาก มีบรรทัดของรหัสที่เรียกวัตถุ Excel วิธีการ หรือคุณสมบัติ โดยไม่มีการพิจารณาคุณสมบัติขององค์ประกอบที่ มีตัวแปรวัตถุของ Excel Visual Basic ไม่ปล่อยการอ้างอิงนี้ได้จนกว่าคุณจบโปรแกรม อ้างอิงนี้ errant รบกวนรหัสการดำเนินการอัตโนมัติเมื่อรหัสที่รันมากกว่าหนึ่งครั้ง
การแก้ปัญหา
เมื่อต้องการแก้ไขปัญหานี้ ดัดแปลงโค้ดเพื่อให้แต่ละการเรียกไปยัง Excel วัตถุ วิธี หรือคุณสมบัติมีคุณสมบัติเข้าเกณฑ์กับตัวแปรวัตถุที่เหมาะสม
สถานะ
ลักษณะการทำงานนี้เกิดจากการออกแบบ
ข้อมูลเพิ่มเติม
เมื่อต้องการทำให้เป็นอัตโนมัติ Microsoft Excel คุณต้องสร้างตัวแปรวัตถุที่มักจะอ้างอิงถึงวัตถุโปรแกรมประยุกต์ Excel หรือวัตถุสมุดงาน Excel สามารถตั้งค่าตัวแปรวัตถุอื่นเพื่ออ้างอิงไปยังแผ่นงาน ช่วง หรือวัตถุอื่นในตัวแบบวัตถุ Microsoft Excel แล้ว เมื่อคุณเขียนรหัสที่จะใช้ Excel วัตถุ วิธี หรือคุณสมบัติ คุณควรนำหน้าการโทร ด้วยตัวแปรวัตถุที่เหมาะสมเสมอ ถ้าคุณไม่ Visual Basic สร้างการอ้างอิงตัวเองไปยัง Excel การอ้างอิงนี้อาจทำให้เกิดปัญหาเมื่อคุณพยายามเรียกใช้รหัส automation หลายครั้ง โปรดสังเกตว่า แม้ว่าบรรทัดของรหัสเริ่มต้น ด้วยตัวแปรวัตถุ การเรียกจะให้มีการใช้วัตถุ Excel วิธีการ หรือคุณสมบัติในกึ่งกลางของบรรทัดของรหัสที่ไม่ต้องนำหน้า ด้วยตัวแปรวัตถุ
ขั้นตอนต่อไปนี้แสดงให้เห็นถึงวิธีการทบทวนเกิดปัญหานี้และวิธีการแก้ไขปัญหา
ขั้นตอนในการทบทวนเกิดลักษณะการทำงาน
-
เริ่มต้นโครงการ Standard EXE ใหม่ใน Visual Basic Form1 จะถูกสร้างขึ้น โดยค่าเริ่มต้น
-
บนเมนูโครงการคลิกอ้างอิงและจากนั้น ตรวจสอบไลบรารีวัตถุสำหรับรุ่นของ Excel ที่คุณต้องการที่จะทำให้เป็นอัตโนมัติ
-
ใส่ตัวควบคุมCommandButtonบน Form1
-
คัดลอกตัวอย่างรหัสต่อไปนี้ไปยังรหัสหน้าต่างของ Form1
Option Explicit
Private Sub Command1_Click()
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Add
Set xlSheet = xlBook.Worksheets("Sheet1")
xlSheet.Range(Cells(1, 1), Cells(10, 2)).Value = "Hello"
xlBook.Saved = True
Set xlSheet = Nothing
Set xlBook = Nothing
xlApp.Quit
Set xlApp = Nothing
End Sub -
บนเมนูรันคลิกเริ่มหรือกด F5 เพื่อเริ่มการทำงานของโปรแกรม
-
คลิกที่ตัวควบคุมCommandButton ไม่มีข้อผิดพลาดเกิดขึ้น อย่างไรก็ตาม การอ้างอิงไปยัง Excel ถูกสร้างขึ้น และไม่ได้นำออกใช้
-
คลิกที่ตัวควบคุมCommandButtonอีกครั้ง โปรดสังเกตว่า คุณได้รับข้อความแสดงข้อผิดพลาดที่กล่าวถึงในส่วน "อาการ"
หมายเหตุ ข้อความแสดงข้อผิดพลาดเกิดขึ้นเนื่องจากรหัสที่อ้างอิงถึงวิธีการของเซลล์โดยไม่ต้องอยู่ก่อนหน้าการโทรด้วยการ
ตัวแปรวัตถุxlSheet -
หยุดการโครงการ และเปลี่ยนบรรทัดของรหัสต่อไปนี้:
xlSheet.Range(Cells(1,1),Cells(10,2)).Value = "Hello"
เปลี่ยนบรรทัดของรหัสที่คล้ายกับบรรทัดของรหัสต่อไปนี้
xlSheet.Range(xlSheet.Cells(1,1),xlSheet.Cells(10,2)).Value = "Hello"
-
เรียกใช้โปรแกรมอีกครั้ง โปรดสังเกตว่า คุณสามารถเรียกใช้รหัสหลายครั้งโดยไม่ได้รับข้อผิดพลาด
ข้อมูลอ้างอิง
สำหรับข้อมูลเพิ่มเติม คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
แฟ้มวิธีใช้ระบบอัตโนมัติของ Microsoft Office 97 167223ที่พร้อมใช้งาน
189618คุณอาจได้รับข้อความข้อผิดพลาด "ข้อผิดพลาดรันไทม์ '-2147023174' (800706ba)" หรือ "รันไทม์ข้อผิดพลาด '462' " เมื่อคุณเรียกใช้รหัส Visual Basic ที่ใช้ดำเนินการอัตโนมัติเพื่อควบคุม Word