徵兆
如果您使用 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 產品中的一個錯誤。
其他相關資訊
重現行為的步驟
-
確認電腦的地點設定為非英語語言。針對 Windows 2000:
-
在 Windows 控制台,雙擊區域選項。
-
在「一般」標籤中,選擇一個地點,然後點擊確定。
針對 Windows XP 或 Windows Server 2003:
-
在控制台中,開啟區域與語言選項。
-
在 區域選項 標籤中,選擇地點,然後點擊 確定。
-
-
啟動 Microsoft Visual Studio .NET。
-
在檔案選單中,指向「新建」,然後點選專案。 在新專案對話框中,專案類型中點選 Visual Basic 專案。 在範本中,點選 Windows 應用程式,然後點選確定。 預設情況下,Form1 會被建立。
-
在檢視選單中,點選工具箱,然後在 Form1 新增按鈕。
-
要顯示表單的代碼視窗,請雙擊按鈕1。
-
在程式碼視窗中,替換以下程式碼
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
-
在 Form1 程式碼模組的開頭加上以下行:
Option Strict Off
-
按 F5 即可建立並執行程式。
-
要產生錯誤,請點擊按鈕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