自動化 Office 應用程式時,收到執行階段錯誤 429

文章翻譯 文章翻譯
文章編號: 828550 - 檢視此文章適用的產品。
如 Microsoft Office XP,[Office 2000 和 [Office 97 版本的本文中,請參閱 244264
全部展開 | 全部摺疊

在此頁中

結論

當您使用 New 運算子或 CreateObject 函數 Microsoft Visual Basic 來建立執行個體的 Microsoft Office 應用程式,您可能會收到下列錯誤訊息:
執行階段錯誤 429': ActiveX 元件無法建立物件
就會發生這個錯誤時 「 元件物件模型 (COM) 無法建立要求的 自動化 物件且 自動化 物件將會因此 Visual Basic 中無法使用。在所有電腦上,不會發生這個錯誤。

本文將告訴您如何診斷和解決常見的問題,可能會造成這個錯誤。

其他相關資訊

在 Visual Basic 中有錯誤 429 的幾個原因。就會發生這個錯誤,下列條件為真:
  • 應用程式中沒有發生錯誤。
  • 系統組態沒有發生錯誤。
  • 有是遺失的元件。
  • 有是損毀的元件。
若要到錯誤的原因找出問題所在。如果您收到用戶端電腦上的錯誤 429,使用下列資訊,隔離,並解決在 Microsoft Office 應用程式中的錯誤。

附註某些下列資訊也可能會套用到非 Office COM 伺服器。不過,本文假設來自動化 Office 應用程式。

檢查程式碼

疑難排解 「 錯誤前嘗試隔離一行可能會造成問題的程式碼。

如果您發現一行程式碼可能會造成問題,完成這些程序:
  • 請確定程式碼使用明確的物件建立。

    問題是容易識別如果他們縮小至單一動作。比方說尋找隱含物件建立為下列其中使用。

    程式碼範例 1
    Application.Documents.Add 'DON'T USE THIS!!
    程式碼範例 2
    Dim oWordApp As New Word.Application 'DON'T USE THIS!!
    '... some other code
    oWordApp.Documents.Add
    兩者皆這些程式碼範例是使用隱含物件建立。Microsoft Office Word 2003 前將不會啟動該變數稱為至少一次。 因為變數可能會呼叫該程式的不同部份,可能難以找出問題。它可能會難以確認問題造成的或 文件 物件建立時建立 應用程式 物件。

    而,您可以請以明確的呼叫,建立每個物件分別,為
    Dim oWordApp As Word.Application
    Dim oDoc As Word.Document
    Set oWordApp = CreateObject("Word.Application")
    '... some other code
    Set oDoc = oWordApp.Documents.Add
    時您請以明確的呼叫,個別建立每個物件,問題都可以輕易地隔離。 下面。這可能也讓程式碼更容易閱讀。
  • 使用 CreateObject 函數而非使用 New 運算子,當您建立 Office 應用程式的執行個體。

    CreateObject 函式密切對應建立處理程序大部分的 Microsoft Visual C++ 用戶端所使用。 CreateObject 函式也可以變更在版本之間伺服器的 CLSID。您可以使用 CreateObject 早期繫結物件與晚期繫結物件的函式。
  • 確認 ProgID"字串,會傳遞至 CreateObject 正確,並確認 ProgID"字串是獨立的版本。比方說使用 Excel.Application"字串而非使用 Excel.Application.8"字串。失敗的系統可能擁有舊版 Microsoft Office 或較新版本的 Microsoft Office 比 ProgID"字串中指定的版本。
  • 使用 Erl 指令來報告不成功的程式碼行行號。這可以幫助您無法在 IDE 中執行的應用程式進行偵錯。下列程式碼會告訴您哪些 自動化 物件不能建立 (Microsoft Word 或 Microsoft Office Excel 2003):
    Dim oWord As Word.Application
     	Dim oExcel As Excel.Application
     	
     	On Error Goto err_handler
     	
     	1: Set oWord = CreateObject("Word.Application")
     	2: Set oExcel = CreateObject("Excel.Application")
     	
     	' ... some other code
     	
     	err_handler:
     	  MsgBox "The code failed at line " & Erl, vbCritical
    使用 MsgBox 函式和行號追蹤錯誤。
  • 使用晚期繫結,如下所示:
    Dim oWordApp As Object
    先繫結物件需要跨處理序 (Process) 界限封送處理其自訂介面。如果自訂介面無法封送處理期間 CreateObject 或在 [新增] 時,您會收到錯誤 429。晚期繫結物件使用 IDispatch 系統定義介面,它不需要自訂 Proxy 封送處理。使用晚期繫結物件來驗證是否此程序是否正常運作。

    如果物件是早期繫結時,只會發生問題,問題是伺服器應用程式中。 通常,您可以重新安裝應用程式以更正問題本文的 [檢查自動化伺服器] 一節中所述。

檢查自動化伺服器

對於 CreateObject新增 會出現一個錯誤最常見的原因是伺服器應用程式有問題。通常,應用程式的組態或應用程式的安裝程式造成問題。若要疑難排解,請使用下列程序:
  • 請確認您想要自動化 Office 應用程式安裝在本機電腦上。請確定您可以執行應用程式。若要執行此動作按一下 [開始]、 按一下 [執行],然後再試,執行應用程式]。如果您不能以手動方式執行應用程式,應用程式將無法運作透過自動化。
  • 重新註冊應用程式,如下所示:
    1. 按一下 [開始],然後按一下 [執行]。
    2. 在 [執行] 對話方塊輸入伺服器路徑並再附加 / RegServer 線條的結尾。
    3. 按一下 [確定]

      應用程式會以無訊息模式執行。應用程式是 re-registered 為 COM 伺服器。
    如果登錄機碼時遺失,就會發生此問題,這些步驟通常可以修正問題。
  • 檢查 LocalServer32 機碼下 CLSID,為您想要自動化的應用程式。請確定 LocalServer32 索引鍵指向應用程式正確的位置。請確定路徑名稱是短路徑 (DOS 8.3) 格式。您沒有註冊的伺服器可以使用短路徑名稱。不過,包括內嵌的空格的長路徑名稱可能在某些系統上造成問題。

    若要檢查路徑所儲存的索引鍵伺服器,啟動 「 Windows 登錄編輯程式 」,如下所示:
    1. 按一下 [開始],然後按一下 [執行]。
    2. 輸入 regedit,然後按一下 [確定]
    3. 移至 HKEY_CLASSES_ROOT\CLSID 索引鍵。

      在此機碼下是在系統上已註冊的自動化伺服器的 CLSID。
    4. 使用下列 CLSID 機碼的值來尋找代表您想要自動化之 Office 應用程式的索引鍵。檢查 LocalServer32 機碼,路徑之 CLSID 金鑰。
      摺疊此表格展開此表格
      辦公室伺服器CLSID 機碼
      Access.Application{73a4c9c1-d68d-11 D 0-98bf-00a0c90dc8d9}
      Excel.Application{00024500-0000-0000-c000-} 000000000046
      FrontPage.application {04df1015-7007-11 D 1-83bc-006097abe675}
      Outlook.application{0006f03a-0000-0000-c000-} 000000000046
      PowerPoint.application{91493441-5a91-11cf-8700-} 00aa0060263b
      Word.Application{000209ff-0000-0000-c000-} 000000000046
    5. 請確定路徑符合實際檔案的位置。
    附註當不正確,似乎正確短路徑名稱。比方說 Office 和 Microsoft Internet Explorer (如果它們已安裝在他們的預設位置) 具有類似於 C:\PROGRA~1\MICROS~ X 的短路徑 \ (其中 X 是一個數字)。這個名稱不能一開始出現是短路徑名稱。

    如果要判斷路徑是否正確,請依照下列步驟執行:
    1. 按一下 [開始],然後按一下 [執行]。
    2. 從登錄複製值,並再在 [執行] 對話方塊中貼上值。

      附註移除 / 自動化 切換才能執行應用程式。
    3. 按一下 [確定]
    4. 請確認應用程式會正確地執行。

      如果在您按下 [確定] 後,就會執行應用程式,伺服器已正確註冊。如果應用程式未執行,按一下 [確定] 之後,將 LocalServer32 機碼的值取代正確的路徑。如果您可以,使用短路徑名稱。
  • 測試可能有損毀或 Excel.xlb 資源檔的 Normal.dot 範本。當您如果是在 Word 中的 [Normal.dot] 樣板或 Excel.xlb 資源檔,在 Excel 中的已損毀自動化 Microsoft Word 或 Excel 時,可能會發生問題。若要測試這些檔案,搜尋本機硬碟或 Excel.xlb Normal.dot 的所有執行個體。

    附註針對執行 Microsoft Windows 2000 的系統或執行 Microsoft Windows XP 的系統,可能會發現這些檔案的多份。沒有備份的每個檔案為安裝在系統每個使用者設定檔。

    暫時重新命名 Normal.dot 檔案或 [Excel.xlb 檔案,然後重新執行自動化測試。Word 和 Excel 兩者都建立這些檔案,如果它們不能找到它們。請確認程式碼可以運作。如果程式碼的運作當建立新的 Normal.dot 檔案,,刪除您重新命名的檔案。這些檔案已損毀。如果程式碼無法運作,您必須回到原來的檔案名稱儲存任何自訂的設定儲存在這些檔案重新命名這些檔案。
  • 如果您的系統需要執行 Windows 2000 系統管理員帳戶下執行應用程式。Office 伺服需要讀取/寫入存取登錄,並在磁碟機。如果您目前的安全性設定拒絕讀取/寫入存取辦公室伺服器可能會無法正確載入。

檢查系統

系統組態也可能會造成逾時的處理序 COM 伺服器建立的問題。如果要疑難排解,使用下列程序在系統上發生錯誤:
  • 判斷問題是否發生與程序外的任何伺服器。如果您有使用特定的 COM 應用程式伺服器 (如 Word) 測試不同的程序外伺服器進行確認問題不是與 COM 層本身。如果您不能在電腦上建立出處理序 COM 伺服器,本文重新安裝 Microsoft Office > 一節所述,重新安裝 OLE 系統檔案,或重新安裝以解決此問題的作業系統。
  • 檢查版本號碼為管理自動化 OLE 系統檔案。這些檔案通常會安裝成組。這些檔案必須符合組建編號。設定不正確的安裝公用程式誤把可以分別安裝檔案。這會導致檔案不相符。若要避免發生問題自動化,檢查,請確定檔案組建會符合的檔案。

    自動化檔案都位於 [Windows\System32 目錄或 Winnt\System32 目錄中。請檢查下列的檔案。
    摺疊此表格展開此表格
    檔案名稱版本修改日期
    Asycfilt.dll3.50.50142002 年 9 月 4日,
    一定3.50.50162002 年 9 月 4日,
    Olepro32.dll5.0.50142002 年 9 月 4日,
    Stdole2.tlb3.0.50142002 年 9 月 4日,
    檢查檔案版本,在 Windows 檔案總管在檔案上按一下滑鼠右鍵,然後按一下 [內容]。請注意最後四個位數的檔案版本 (建置號碼) 和檔案上次修改的日期。請確定這些值是相同的自動化的所有檔案。

    附註從使用 Windows Server 2003 電腦有安裝的 Office 2003 的電腦中擷取較早的版本號碼和較早的日期。這些數字和日期都只作為範例。您的值可能不同。

    如果檔案不符合組建編號或修改的日期,下載自動解壓縮的公用程式,更新您的 Automation 檔案。

    如更多有關如何存取執行階段檔案,按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
    235420Vbrun60sp4.exe 安裝 Visual Basic 6.0 SP4 執行階段檔案
  • 使用來檢查服務和系統啟動的系統設定公用程式 (Msconfig.exe) 的協力廠商應用程式,可能會限制在 Office 應用程式中的執行程式碼。如需有關 Msconfig.exe,按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
    310560如何疑難排解在 Windows XP 中使用系統設定公用程式的組態錯誤
    比方說 Outlook 自動化應用程式可能會失敗因為您執行防毒程式,且具有 「 指令碼封鎖程式 」 功能。

    附註只停用防毒程式暫時不連接到網路的測試系統上。

    或者,請依照下列步驟執行以停用協力廠商增益集的 Outlook 中:
    1. 按一下 [工具] 功能表 選項
    2. 按一下 [其他] 索引標籤的 [進階選項]。
    3. 在 [進階選項] 對話方塊按一下 [增益集管理員]。
    4. 按一下以清除任何協力廠商增益集] 核取方塊。
    5. 重新啟動 Outlook。
    如果這個方法可以解決問題,請連絡協力廠商防毒廠商,取得更新防毒程式的相關資訊。

重新安裝 Office

如果沒有任何先前的程序解決問題,移除 Office 後再重新安裝 Office。Microsoft 建議您先,移除現有版本,並接著使用原始的安裝磁片來重新安裝 Office。

如需詳細資訊按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中 「 文件]:
219423如何移除 Office 2000 CD1
158658如何完全移除 Microsoft Office 97

?考

如需有關疑難排解 429' 錯誤訊息的詳細資訊,按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
240377如何確定 Jet 3.5 已正確安裝 (部)
如需有關 Office 自動化和程式碼範例請造訪下列 Microsoft Web 網站:
http://support.microsoft.com/ofd

屬性

文章編號: 828550 - 上次校閱: 2013年7月16日 - 版次: 5.6
這篇文章中的資訊適用於:
  • Microsoft Office Excel 2007
  • Microsoft Office SharePoint Designer 2007
  • Microsoft Office Outlook 2007
  • Microsoft Office Outlook 2003
  • Microsoft Office PowerPoint 2007
  • Microsoft Office PowerPoint 2003
  • Microsoft Office Word 2007
  • Microsoft Office Access 2007
  • Microsoft Office Access 2003
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Professional Edition
關鍵字:?
kbmt kbexpertisebeginner kbtshoot kbprogramming kberrmsg kbautomation kbinfo KB828550 KbMtzh
機器翻譯
請注意--重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,且可能由 Microsoft Community 利用 Community Translation Framework技術或人工進行事後編修。翻譯過程並無專業譯者參與。Microsoft 同時提供使用者人為翻譯、機器翻譯及社群編修後的機器翻譯三種版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,所有翻譯文章都可能不盡完美,內容都可能出現詞彙、語意或文法上的錯誤。就翻譯內容之不正確或錯誤,或客戶因使用翻譯內容所產生的任何損害,微軟不負擔任何責任。Microsoft將依合理的商業努力不斷地更新機器翻譯軟體和工具,以期能為使用者提供更好的服務。
按一下這裡查看此文章的英文版本:828550
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

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