添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

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)