ขณะนี้คุณออฟไลน์อยู่ กำลังรออินเทอร์เน็ตเพื่อเชื่อมต่ออีกครั้ง

จุดบกพร่อง: เกิดข้อผิดพลาด "ไลบรารีรูปแบบเก่าหรือชนิดไม่ถูกต้อง" เมื่อทำ Excel ให้เป็นอัตโนมัติ

อาการ
หากคุณทำให้ Microsoft Excel เป็นอัตโนมัติโดยใช้ Microsoft Visual Basic .NET, Microsoft Visual C# .NET หรือ Microsoft Visual C++ คุณอาจได้รับข้อผิดพลาดต่อไปนี้เมื่อเรียกใช้เมธอดบางอย่าง:
ข้อผิดพลาด: 0x80028018 (-2147647512)
คำอธิบาย: ไลบรารีรูปแบบเก่าหรือชนิดไม่ถูกต้อง
สาเหตุ
คุณได้รับข้อผิดพลาดนี้ขณะเรียกเมธอดของ Excel เมื่อเงื่อนไขต่อไปนี้เป็นจริง:
  • เมธอดนี้ต้องใช้ LCID (ตัวระบุระบบภาษา)
  • คุณเรียกใช้ Excel รุ่นภาษาอังกฤษ อย่างไรก็ดี การตั้งค่าภูมิภาคสำหรับคอมพิวเตอร์ได้รับการกำหนดค่าสำหรับภาษาที่ไม่ใช่ภาษาอังกฤษ
หากคอมพิวเตอร์แบบไคลเอ็นต์เรียกใช้ Excel รุ่นภาษาอังกฤษ และระบบภาษาสำหรับผู้ใช้ปัจจุบันถูกกำหนดให้เป็นภาษาอื่นที่ไม่ใช่ภาษาอังกฤษ Excel จะพยายามค้นหาชุดภาษาสำหรับภาษาที่กำหนด หากไม่พบชุดภาษา จะมีการรายงานข้อผิดพลาด
การหลีกเลี่ยงปัญหา
เมื่อต้องการแก้ไขปัญหานี้ คุณสามารถใช้วิธีการอย่างหนึ่งอย่างใดต่อไปนี้:
  • ติดตั้ง 'แพคส่วนติดต่อผู้ใช้แบบหลายภาษา' สำหรับรุ่น Office ที่คุณใช้
  • ดำเนินการเมธอดหรือคุณสมบัติของ Excel โดยใช้ InvokeMember เพื่อให้คุณสามารถระบุ CultureInfo สำหรับการเรียกใช้ได้ ตัวอย่างเช่น โค้ดต่อไปนี้แสดงวิธีการที่คุณจะสามารถเรียกใช้เมธอด เพิ่ม วัตถุ สมุดงาน โดยมี "en-US" เป็น CultureInfo:
    Dim oApp As New Excel.Application()oApp.Visible = TrueoApp.UserControl = TrueDim oBooks As Object = oApp.WorkbooksDim ci As System.Globalization.CultureInfo = New System.Globalization.CultureInfo("en-US")oBooks.GetType().InvokeMember("Add", Reflection.BindingFlags.InvokeMethod, Nothing, oBooks, Nothing, ci)
  • หรือ ตั้งค่า CultureInfo ก่อนเพื่อเรียกใช้เมธอดของ Excel ตัวอย่างเช่น:
    Dim oApp As New Excel.Application()oApp.Visible = TrueoApp.UserControl = TrueDim oldCI As System.Globalization.CultureInfo = _    System.Threading.Thread.CurrentThread.CurrentCultureSystem.Threading.Thread.CurrentThread.CurrentCulture = _    New System.Globalization.CultureInfo("en-US")oApp.Workbooks.Add()System.Threading.Thread.CurrentThread.CurrentCulture = oldCI

เมื่อคุณใช้วิธีการแก้ปัญหาวิธีใดวิธีหนึ่งเหล่านี้สำหรับคอมพิวเตอร์ที่มีการตั้งค่าภูมิภาคไม่ตรงกับรุ่นภาษาปัจจุบันของ Office คุณควรจะคุ้นเคยกับวิธีการทำงานของ Excel และวิธีการตีความข้อมูลของ Excel ซึ่งอาจได้รับการจัดรูปแบบสำหรับระบบภาษาที่ระบุ สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการเขียนโซลูชันของ Excel แบบสากลโดยใช้ Visual Studio .NET โปรดดูที่บทความต่อไปนี้ใน MSDN:

การสร้างโซลูชันของ Office สำหรับใช้ในหลายประเทศ/ภูมิภาค ประเด็นเรื่องการทำให้เป็นสากลและทำให้เป็นภาษาท้องถิ่นสำหรับโซลูชันที่สร้างขึ้นโดยใช้ Microsoft Visual Studio Tools สำหรับระบบ Microsoft Office
สถานะ
Microsoft ยืนยันว่าจุดบกพร่องนี้เป็นสิ่งที่เกิดขึ้นกับผลิตภัณฑ์ของ Microsoft ซึ่งมีการระบุไว้ในส่วน "นำไปใช้กับ"
ข้อมูลเพิ่มเติม

ขั้นตอนต่างๆ เพื่อให้เกิดลักษณะการทำงานแบบเดิม

  1. ตรวจสอบว่าระบบภาษาสำหรับคอมพิวเตอร์ได้รับการตั้งค่าให้เป็นภาษาอื่นที่ไม่ใช่ภาษาอังกฤษหรือไม่

    สำหรับ Windows 2000:
    1. ในแผงควบคุมของ Windows ให้คลิกสองครั้งที่ ตัวเลือกภูมิภาค
    2. บนแท็บ ทั่วไป ให้เลือกตำแหน่งที่ตั้ง แล้วคลิก ตกลง
    สำหรับ Windows XP หรือ Windows Server 2003:
    1. ในแผงควบคุม ให้เปิดตัวเลือกภูมิภาคและภาษา
    2. ในแท็บ ตัวเลือกภูมิภาค ให้เลือกระบบภาษา แล้วคลิก ตกลง
  2. เริ่ม Microsoft Visual Studio .NET
  3. ในเมนู แฟ้ม เลือก สร้าง แล้วคลิก โครงการ ในกล่องโต้ตอบ โครงการใหม่ ภายใต้ ชนิดโครงการ ให้คลิก โครงการ Visual Basic ภายใต้ แม่แบบ คลิก โปรแกรมประยุกต์ Windows แล้วคลิก ตกลง โดยค่าเริ่มต้นแล้ว Form1 จะถูกสร้างขึ้น
  4. ในเมนู มุมมอง ให้คลิก กล่องเครื่องมือ แล้วเพิ่มปุ่มไปที่ Form1
  5. เมื่อต้องการแสดงหน้าต่างโค้ดสำหรับฟอร์ม ให้คลิกสองครั้งที่ Button1
  6. ในหน้าต่างโค้ด ให้แทนที่โค้ดต่อไปนี้
    Private Sub Button1_Click(ByVal sender As System.Object, _                          ByVal e As System.EventArgs) _                          Handles Button1.ClickEnd Sub					
    with:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click    Dim oApp As Object    Dim oDoc As Object    oApp = CreateObject("Excel.Application")    oApp.Visible = True    oDoc = oApp.Workbooks.Add    oDoc.Close()    oApp.Quit()    oDoc = Nothing    oApp = NothingEnd Sub					
  7. ให้เพิ่มบรรทัดต่อไปนี้ที่ช่วงแรกของโค้ดโมดูล Form1:
    Option Strict Off
  8. กด F5 เพื่อสร้างและเรียกใช้โปรแกรม
  9. เมื่อต้องการสร้างข้อผิดพลาด ให้คลิก Button1 ข้อผิดพลาดจะปรากฏขึ้นบนบรรทัดที่อ่านว่า:
    oDoc = oApp.Workbooks.Add					
ข้อมูลอ้างอิง
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการทำ Office ให้เป็นอัตโนมัติ โปรดเยี่ยมชมเว็บไซต์ Microsoft Office Development ต่อไปนี้: นอกจากนี้ ให้ดูบทความต่อไปนี้ในฐานความรู้ของ Microsoft:
301982 วิธีการทำให้ Microsoft Excel เป็นอัตโนมัติจาก Visual Basic .NET (ลิงค์นี้อาจเชื่อมโยงไปยังเนื้อหาที่เป็นภาษาอังกฤษบางส่วน หรือทั้งหมด)
302084 วิธีการทำให้ Microsoft Excel เป็นอัตโนมัติจาก Microsoft Visual C# .NET (ลิงค์นี้อาจเชื่อมโยงไปยังเนื้อหาที่เป็นภาษาอังกฤษบางส่วน หรือทั้งหมด)
XL2003 XL2007