· | 應(yīng)用程序中出現(xiàn)錯誤。 |
· | 系統(tǒng)配置中出現(xiàn)錯誤。 |
· | 缺少某個組件。 |
· | 某個組件損壞。 |
· | 確保代碼使用顯式對象創(chuàng)建。 如果將問題縮窄到單個操作,則更易于確定問題。例如,尋找使用隱式對象創(chuàng)建的代碼,如以下示例之一。 代碼示例 1
代碼示例 2
以上兩個代碼示例都使用了隱式對象創(chuàng)建。在至少調(diào)用變量一次之前,Microsoft Office Word 2003 不會啟動。由于變量可能在程序的不同部分中被調(diào)用,因此可能難以找到問題??赡茈y以驗證是在創(chuàng)建 Application 對象時還是在創(chuàng)建 Document 對象時導(dǎo)致問題。您可以改為進(jìn)行顯式調(diào)用以分別創(chuàng)建每個對象,如下所示。
當(dāng)您進(jìn)行顯式調(diào)用以分別創(chuàng)建每個對象時,會更易于隔離問題。這樣做也可能使代碼更易于閱讀。 |
· | 創(chuàng)建 Office 應(yīng)用程序的實例時,使用 CreateObject 函數(shù),而不使用 New 運算符。 CreateObject 函數(shù)緊密映射大多數(shù) Microsoft Visual C++ 客戶端使用的創(chuàng)建過程。CreateObject 函數(shù)還允許在版本之間更改服務(wù)器的 CLSID??蓪?CreateObject 函數(shù)與早期綁定對象以及后期綁定對象一起使用。 |
· | 驗證傳遞給 CreateObject 的“ProgID”字符串是否正確,然后驗證“ProgID”字符串是否獨立于版本。例如,使用“Excel.Application”字符串而不是使用“Excel.Application.8”字符串。失敗的系統(tǒng)可能有舊于或新于您在“ProgID”字符串中指定的版本的 Microsoft Office 版本。 |
· | 使用 Erl 命令來報告不成功的代碼行的行號。這可能幫助您在 IDE 中調(diào)試無法運行的應(yīng)用程序。以下代碼告訴您無法創(chuàng)建 Automation 對象(Microsoft Word 或 Microsoft Office Excel 2003):
使用 MsgBox 函數(shù)和行號來跟蹤錯誤。 |
· | 使用后期綁定,如下所示:
早期綁定對象要求跨進(jìn)程邊界封送它們的自定義接口。如果在 CreateObject 或 New 期間無法封送自定義接口,則會收到錯誤 429。后期綁定對象使用不需要封送自定義代理的 IDispatch 系統(tǒng)定義接口。使用后期綁定對象來驗證此過程是否正確工作。如果只在對象被早期綁定時發(fā)生問題,則問題在服務(wù)器應(yīng)用程序中。通常,可以如本文中的“檢查自動化服務(wù)器”一節(jié)所述重新安裝應(yīng)用程序,以糾正問題。 |
· | 驗證您要自動執(zhí)行的 Office 應(yīng)用程序安裝在本地計算機上。確??梢赃\行該應(yīng)用程序。要這樣做,依次單擊“開始”和“運行”,然后嘗試運行該應(yīng)用程序。如果無法手動運行該應(yīng)用程序,則該應(yīng)用程序?qū)⒉荒芤宰詣踊绞焦ぷ鳌? | ||||||||||||||||||||||||||||||||
· | 重新注冊該應(yīng)用程序,如下所示:
| ||||||||||||||||||||||||||||||||
· | 在 CLSID 下檢查要自動執(zhí)行的應(yīng)用程序的 LocalServer32 項。確保 LocalServer32 項指向該應(yīng)用程序的正確位置。確保路徑名稱為短路徑 (DOS 8.3) 格式。您不必通過使用短路徑名稱來注冊服務(wù)器。但是,在一些系統(tǒng)上,包含嵌入空格的長路徑名稱可能導(dǎo)致問題。 要檢查為服務(wù)器存儲的路徑項,請如下所示啟動 Windows 注冊表編輯器:
要確定路徑是否正確,請執(zhí)行下列步驟:
| ||||||||||||||||||||||||||||||||
· | 測試 Normal.dot 模板或 Excel.xlb 資源文件是否可能損壞。如果 Word 中的 Normal.dot 模板或 Excel 中的 Excel.xlb 資源文件損壞,則在自動執(zhí)行 Microsoft Word 或 Microsoft Excel 時可能出現(xiàn)問題。要測試這些文件,搜索本地硬盤驅(qū)動器以查找 Normal.dot 或 Excel.xlb 的所有實例。 注意:對于運行 Microsoft Windows 2000 或 Microsoft Windows XP 的系統(tǒng),可能會找到這些文件的多個副本。對于這些文件中的每一個,都有一個副本對應(yīng)于系統(tǒng)上安裝的每個用戶配置文件。 臨時重命名 Normal.dot 文件或 Excel.xlb 文件,然后重新運行自動化測試。如果 Word 和 Excel 無法找到這些文件,它們會創(chuàng)建這些文件。驗證代碼是否工作。如果創(chuàng)建新的 Normal.dot 文件時代碼工作,則刪除重命名的文件。這些文件已損壞。如果代碼不工作,則必須將這些文件重命名為其原始文件名,以保存這些文件中保存的任何自定義設(shè)置。 | ||||||||||||||||||||||||||||||||
· | 如果系統(tǒng)運行 Windows 2000,則在管理員帳戶下運行應(yīng)用程序。Office 服務(wù)器需要注冊表和磁盤驅(qū)動器的讀/寫訪問權(quán)。如果當(dāng)前安全設(shè)置拒絕讀/寫訪問權(quán),Office 服務(wù)器可能無法正確加載。 |
· | 確定問題是否出現(xiàn)在任何進(jìn)程外服務(wù)器上。如果您有使用特定 COM 服務(wù)器的應(yīng)用程序(例如 Word),請測試其他進(jìn)程外服務(wù)器,以確保問題不是出在 COM 層本身上。如果無法在計算機上創(chuàng)建進(jìn)程外 COM 服務(wù)器,則按照本文中的“重新安裝 Microsoft Office”一節(jié)所述重新安裝 OLE 系統(tǒng)文件,或者重新安裝操作系統(tǒng)以解決問題。 | |||||||||||||||
· | 檢查管理自動化的 OLE 系統(tǒng)文件的版本號。這些文件通常作為集合安裝。這些文件必須匹配內(nèi)部版本號。不正確配置的安裝實用程序可能會錯誤地分別安裝這些文件。這會導(dǎo)致文件不匹配。為避免出現(xiàn)自動化問題,請檢查文件以確保文件內(nèi)部版本匹配。 自動化文件位于 Windows/System32 目錄或 Winnt/System32 目錄中。檢查以下文件。
注意:較早的版本號和較早的日期是從安裝了 Office 2003 的 Windows Server 2003 計算機中檢索的。這些編號和日期只用作示例。您的值可能不同。 如果文件不匹配內(nèi)部版本號或修改日期,請下載更新自動化文件的自解壓實用程序。 有關(guān)如何訪問運行時文件的更多信息,請單擊下面的文章編號,以查看 Microsoft 知識庫中相應(yīng)的文章: 235420 (http://support.microsoft.com/kb/235420/) VBRun60sp4.exe 安裝 Visual Basic 6.0 SP4 運行時文件 | |||||||||||||||
· | 對于可能限制在 Office 應(yīng)用程序中運行代碼的第三方應(yīng)用程序,使用系統(tǒng)配置實用程序 (Msconfig.exe) 來檢查服務(wù)和系統(tǒng)的啟動。 有關(guān) Msconfig.exe 的更多信息,請單擊下面的文章編號,以查看 Microsoft 知識庫中相應(yīng)的文章: 310560 (http://support.microsoft.com/kb/310560/) 如何在 Windows XP 中使用系統(tǒng)配置實用程序來排除故障 例如,Outlook 自動化應(yīng)用程序可能因為您正在運行具有“腳本阻止程序”功能的防病毒程序而失敗。注意:請僅在未連接到網(wǎng)絡(luò)的測試系統(tǒng)上暫時禁用防病毒程序。 或者,在 Outlook 中執(zhí)行下列步驟以禁用第三方加載項:
|