【发布时间】:2018-04-03 00:52:24
【问题描述】:
我正在使用下面提到的代码在 word 中复制一些值,然后将其复制回 excel。
但是得到了
运行时错误 429 Activex 组件无法创建对象。
在我格式化我的系统之前,同样的代码可以运行。但是在新安装之后,这不起作用,我收到了错误。
Sub Word()
Application.DisplayAlerts = False
Dim ws As Worksheet
Dim Path As String
Dim objWord As Object
Dim objDoc As Object
Path = ActiveWorkbook.Path
Set inv = Workbooks.Open(Path & "\inv.xls")
Set test = Workbooks.Open(Path & "\test.xlsx")
Set ws = inv.Sheets("inv")
Set Wb = test.Sheets("Sheet1")
ws.Range("A1").Copy
Set objWord = CreateObject("Word.Application") <---The error is here
Set objWord.Visible = True
Set objDoc = objWord.Documents.Open(Path & "\test.docx")
objWord.Selection.Paste
Application.CutCopyMode = False
objDoc.Range(0, objDoc.Range.End).Copy
Wb.Range("A1").Select
ActiveSheet.Paste
inv.Close Savechanges:=False
test.Close Savechanges:=True
objWord.ActiveDocument.Close Savechanges:=wdDoNotSaveChange
objWord.Quit
Set objWord = Nothing
Set objDoc = Nothing
End Sub
【问题讨论】:
-
Word 是否实际安装在机器上并正确注册?除此之外,您向我们展示的代码中还有很多不好的地方。除了 Walters 之外:您不应该将程序命名为
Word,因为这可能会被 VBA 误解。您没有声明inv、wb或test- 您是否在代码模块的顶部有Option Explicit?如果没有,请添加它以防止由拼写错误等引起的问题。 -
还有
objWord.ActiveDocument.Close Savechanges:=wdDoNotSaveChange- 这里你应该使用你为Word文档声明的对象objDoc,而不是ActiveDocument。 -
Cindy,你的观察很有价值。但是在我格式化我的系统之前,同样的代码正在运行。但是在新安装之后,这不起作用并出现错误。
-
然后我回到我的第一个观察结果:Word 是否正确安装和注册 - 显然不是。尝试修复 Word/Office。还有,你说新装:和以前有什么不同?
-
系统已格式化,每个应用程序都是全新安装的。