ระบบอัตโนมัติ Excel ครั้งที่สองที่เรียกใช้โค้ดที่ล้มเหลว


อาการ


ในขณะที่กำลังเรียกใช้โค้ดที่ใช้ทำงานอัตโนมัติเพื่อควบคุม 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 วิธีการ หรือคุณสมบัติในกึ่งกลางของบรรทัดของรหัสที่ไม่ต้องนำหน้า ด้วยตัวแปรวัตถุ

ขั้นตอนต่อไปนี้แสดงให้เห็นถึงวิธีการทบทวนเกิดปัญหานี้และวิธีการแก้ไขปัญหา

ขั้นตอนในการทบทวนเกิดลักษณะการทำงาน

  1. เริ่มต้นโครงการ Standard EXE ใหม่ใน Visual Basic Form1 จะถูกสร้างขึ้น โดยค่าเริ่มต้น
  2. บนเมนูโครงการคลิกอ้างอิงและจากนั้น ตรวจสอบไลบรารีวัตถุสำหรับรุ่นของ Excel ที่คุณต้องการที่จะทำให้เป็นอัตโนมัติ
  3. ใส่ตัวควบคุมCommandButtonบน Form1
  4. คัดลอกตัวอย่างรหัสต่อไปนี้ไปยังรหัสหน้าต่างของ 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
  5. บนเมนูรันคลิกเริ่มหรือกด F5 เพื่อเริ่มการทำงานของโปรแกรม
  6. คลิกที่ตัวควบคุมCommandButton ไม่มีข้อผิดพลาดเกิดขึ้น อย่างไรก็ตาม การอ้างอิงไปยัง Excel ถูกสร้างขึ้น และไม่ได้นำออกใช้
  7. คลิกที่ตัวควบคุมCommandButtonอีกครั้ง โปรดสังเกตว่า คุณได้รับข้อความแสดงข้อผิดพลาดที่กล่าวถึงในส่วน "อาการ"

    หมายเหตุ ข้อความแสดงข้อผิดพลาดเกิดขึ้นเนื่องจากรหัสที่อ้างอิงถึงวิธีการของเซลล์โดยไม่ต้องอยู่ก่อนหน้าการโทรด้วยการ
    ตัวแปรวัตถุxlSheet
  8. หยุดการโครงการ และเปลี่ยนบรรทัดของรหัสต่อไปนี้:
    xlSheet.Range(Cells(1,1),Cells(10,2)).Value = "Hello"
    เปลี่ยนบรรทัดของรหัสที่คล้ายกับบรรทัดของรหัสต่อไปนี้
    xlSheet.Range(xlSheet.Cells(1,1),xlSheet.Cells(10,2)).Value = "Hello"
  9. เรียกใช้โปรแกรมอีกครั้ง โปรดสังเกตว่า คุณสามารถเรียกใช้รหัสหลายครั้งโดยไม่ได้รับข้อผิดพลาด

ข้อมูลอ้างอิง


สำหรับข้อมูลเพิ่มเติม คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:

แฟ้มวิธีใช้ระบบอัตโนมัติของ Microsoft Office 97 167223ที่พร้อมใช้งาน

189618คุณอาจได้รับข้อความข้อผิดพลาด "ข้อผิดพลาดรันไทม์ '-2147023174' (800706ba)" หรือ "รันไทม์ข้อผิดพลาด '462' " เมื่อคุณเรียกใช้รหัส Visual Basic ที่ใช้ดำเนินการอัตโนมัติเพื่อควบคุม Word