VBA在Excel中打開Word碰到"自動化(Automation)錯誤,對象庫未注冊"問題的一種解決方法


1.故障描述

VBA代碼在Excel中使用CreateObject打開Word,本來使用正常的但現在碰到"自動化(Automation)錯誤,對象庫未注冊"問題
本機上安裝過Office2016,后刪除。現在本機上Office版本為2013 專業版Plus。
昨晚使用聯想電腦管家,里面發現了還有個Office2016,然后就順手刪除了。
今天上午就發現這個錯誤了!

出錯代碼如下:

點擊查看代碼
Dim rngTable As Excel.Range
Dim WordApp As Word.Application
Dim templateDoc As Word.Document
Dim myDoc As Word.Document
Dim docFileName As String
Dim docDirName As String

On Error GoTo NotFoundWordDoc
Set WordApp = CreateObject("Word.Application")
Set templateDoc = WordApp.Documents.Open(wordfile_path)
On Error GoTo 0

引用的庫看起來也正常,msword.olb路徑也正常。

2.各種折騰(此處省略數萬字)

3.解決方法

參考stackoverflow上的一篇:ms-word-reference-not-function-automation-error-library-not-registered-err

注意到:

於是Win+regedit打開注冊表,開始搜索鍵值{00020905-0000-0000-C000-000000000046},因為此鍵值對應"Microsoft Word 15.0 Object Library"

注意上圖中版本除了一個8.6的,還有一個8.7的。8.6下還有其他鍵值,但8.7沒有后續其他數據了。但其后搜索到的只找到Version是8.6的,未搜索到8.7的。

猜想,8.7可能是某個版本的遺留,於是果斷備份了注冊表,然后將8.7刪除了!
刪除后:

將8.7刪除后問題即解決了!
以上,其他各種折騰不再贅述,寫下來供碰到同樣問題的同學們參考!

4.ps.

VBE2021中07WordVBA,Excel與Word交互下提供的一個后期綁定的方法,也可以。就是不使用Word Object Library,先定義Object,然后使用。

其實在上面stackoverflow上也提到了后期綁定(Late Binding)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM