徵兆

如果您使用 Microsoft Visual Basic .NET、Microsoft Visual C# .NET 或 Microsoft Visual C++ 來自動化 Microsoft Excel,呼叫某些方法時可能會收到以下錯誤:

錯誤:0x80028018 (-2147647512) 說明:舊格式或無效型態函式庫

原因

當以下條件成立時,你會呼叫 Excel 方法時會收到此錯誤:

  • 此方法需要 LCID (區域識別碼) 。

  • 你用的是英文版的 Excel。 不過,電腦的區域設定是為非英語語言設定的。

如果用戶端電腦執行英文版 Excel,且目前使用者的地點設定為非英語語言,Excel 會嘗試尋找該語言的語言包。 若找不到該語言包,錯誤將被回報。

因應措施 

為了解決這個問題,你可以使用以下其中一種方法:

  • 安裝你版本 Office 的多語言使用者介面包。

  • 請使用 InvokeMember 執行 Excel 方法或屬性,這樣你就能指定通話的 CultureInfo。 例如,以下程式碼說明如何以「en-US」作為 CultureInfo 調用 Workbooks 物件 Add 方法:

    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)
  • 或者,在呼叫 Excel 方法之前,先設定 CultureInfo。 例如:

    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
  • 在 Microsoft Office\Office11 下建立一個 1033 目錄。 然後,將 excel.exe 複製到 1033 目錄,並將其重新命名為 xllex.dll。 欲了解更多資訊,請點擊以下連結 http://blogs.msdn.com/eric_carter/archive/2005/06/15/429515.aspx

當你使用這些變通方法,當區域設定與目前語言版本的 Office 不符時,你應該熟悉 Excel 的行為,以及 Excel 如何解讀可能為特定地區格式化的資料。 欲了解更多關於使用 Visual Studio .NET 撰寫全球化 Excel 解決方案的細節,請參閱以下 MSDN 文章:為多國/地區打造辦公解決方案

http://msdn2.microsoft.com/en-us/library/aa168494 (辦公室.11) .aspx全球化與在地化問題,針對使用 Microsoft Visual Studio Tools for the Microsoft Office System 所建立的解決方案

http://msdn2.microsoft.com/en-us/library/aa192494 (辦公室.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. 要顯示表單的代碼視窗,請雙擊按鈕1。

  6. 在程式碼視窗中,替換以下程式碼

    Private Sub Button1_Click(ByVal sender As System.Object, _                          ByVal e As System.EventArgs) _                          Handles Button1.ClickEnd Sub

    伴隨:

    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. 要產生錯誤,請點擊按鈕1。 錯誤發生在寫著:

    oDoc = oApp.Workbooks.Add

參考

欲了解更多辦公自動化資訊,請造訪以下 Microsoft Office 開發網站:

http://support.microsoft.com/ofd 此外,請參閱以下 Microsoft 知識庫文章:

301982 如何從 Visual Basic .NET 自動化 Microsoft Excel

302084 如何從 Microsoft Visual C# .NET 自動化 Microsoft Excel

需要更多協助嗎?

想要其他選項嗎?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。