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

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 320369 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

อาการ

หากคุณทำให้ 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 = True
    oApp.UserControl = True
    Dim oBooks As Object = oApp.Workbooks
    Dim 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 = True
    oApp.UserControl = True
    Dim oldCI As System.Globalization.CultureInfo = _
        System.Threading.Thread.CurrentThread.CurrentCulture
    System.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 สำหรับใช้ในหลายประเทศ/ภูมิภาค
http://msdn2.microsoft.com/en-us/library/aa168494(office.11).aspx
ประเด็นเรื่องการทำให้เป็นสากลและทำให้เป็นภาษาท้องถิ่นสำหรับโซลูชันที่สร้างขึ้นโดยใช้ Microsoft Visual Studio Tools สำหรับระบบ Microsoft Office
http://msdn2.microsoft.com/en-us/library/aa192494(office.11).aspx

สถานะ

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.Click
    End 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 = Nothing
    End Sub
    					
  7. ให้เพิ่มบรรทัดต่อไปนี้ที่ช่วงแรกของโค้ดโมดูล Form1:
    Option Strict Off
  8. กด F5 เพื่อสร้างและเรียกใช้โปรแกรม
  9. เมื่อต้องการสร้างข้อผิดพลาด ให้คลิก Button1 ข้อผิดพลาดจะปรากฏขึ้นบนบรรทัดที่อ่านว่า:
    oDoc = oApp.Workbooks.Add
    					

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

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการทำ Office ให้เป็นอัตโนมัติ โปรดเยี่ยมชมเว็บไซต์ Microsoft Office Development ต่อไปนี้:
http://support.microsoft.com/ofd
นอกจากนี้ ให้ดูบทความต่อไปนี้ในฐานความรู้ของ Microsoft:
301982 วิธีการทำให้ Microsoft Excel เป็นอัตโนมัติจาก Visual Basic .NET (ลิงค์นี้อาจเชื่อมโยงไปยังเนื้อหาที่เป็นภาษาอังกฤษบางส่วน หรือทั้งหมด)
302084 วิธีการทำให้ Microsoft Excel เป็นอัตโนมัติจาก Microsoft Visual C# .NET (ลิงค์นี้อาจเชื่อมโยงไปยังเนื้อหาที่เป็นภาษาอังกฤษบางส่วน หรือทั้งหมด)

คุณสมบัติ

หมายเลขบทความ (Article ID): 320369 - รีวิวครั้งสุดท้าย: 6 กุมภาพันธ์ 2551 - Revision: 8.3
ใช้กับ
  • Microsoft Office Excel 2007
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual C++ 6.1
  • Microsoft Visual J# .NET 2003 Standard Edition
  • Microsoft Visual Studio Tools for the Microsoft Office System version 2003
Keywords: 
kbvs2002sp1sweep kbautomation kbbug kbpending KB320369

ให้ข้อเสนอแนะ

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com