徵兆
執行使用 Automation 控制 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 不會在您結束程式之前釋出此參照。 當程式碼執行一次以上時,此錯誤參照會干擾自動化程式碼。
解決方案
若要解決此問題,請修改程式碼,讓每一次呼叫 Excel 物件、方法或屬性都符合適用物件變數的資格。
狀態
產生此錯誤是系統刻意為之。
其他相關資訊
若要自動化 Microsoft Excel,您必須建立一個通常參照 Excel Application 物件或 Excel 活頁簿物件的物件變數。 其他物件變數則可設定為參照 Microsoft Excel 物件模型中的工作表、範圍或其他物件。 當您撰寫程式碼以使用 Excel 物件、方法或屬性時,您應一律在通話前加上適當的物件變數。 如果沒有,Visual Basic 會建立自己的 Excel 參照。 當您嘗試多次執行自動化程式碼時,此參照可能會造成問題。 請注意,即使程式程式碼是以物件變數做為開頭,您還是可能會在程式程式碼的中間,使用物件變數來呼叫 Excel 物件、方法或屬性。
下列步驟說明如何重現此問題,以及如何修正問題。重現行為的步驟
-
在 Visual Basic 中開始新的標準 EXE 專案。 表單1 預設為建立。
-
在 [ 專案] 功能表上,按一下 [ 參考資料],然後核取 [物件程式庫] 以瞭解您打算自動化的 Excel 版本。
-
將 CommandButton 控制項放在 Form1 上。
-
將下列程式碼範例複製到表單1 的程式碼視窗。
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
-
在 [ 執行] 功能表上,按一下 [ 開始],或按 F5 以啟動程式。
-
按一下 CommandButton 控制項。 不會發生錯誤。 不過,已建立 Excel 參照,但尚未釋出。
-
再次按一下 CommandButton 控制項。 請注意,您會收到「症狀」一節中討論的其中一個錯誤訊息。
注意:錯誤訊息的發生原因是代碼參照的儲存格方法,在通話前面沒有接聽 xlSheet 物件變數。 -
停止專案並變更下列程式程式碼:
xlSheet.Range(Cells(1,1),Cells(10,2)).Value = "Hello"
將程式程式碼變更為類似下列程式程式碼。
xlSheet.Range(xlSheet.Cells(1,1),xlSheet.Cells(10,2)).Value = "Hello"
-
再次執行程式。 請注意,您可以多次執行驗證碼,而不會收到錯誤訊息。
參考
189618 當您執行使用 Automation 控制Word的 Visual Basic 程式碼時,您可能會收到「執行時間錯誤'2147023174 (800706ba) 」錯誤訊息或「執行時間錯誤 '462'」