activex组件无法使用word.application创建对象错误

时间:2018-04-02 10:09:50

标签: vba excel-vba excel

我使用下面提到的代码复制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

3 个答案:

答案 0 :(得分:0)

您为错误指示的行似乎没问题(因为通常会安装长字,我确定是这种情况)。

什么是不行的是连续的行:...Set objWord.Visible = True.., 当然这条线会产生一个错误原因,它只是一个要设置的属性而不是一个对象。 这应该只是一个:objWord.Visible = True。 希望这可以帮助。 KR。

答案 1 :(得分:0)

请检查以下链接以跟踪您的错误。

Microsoft Help for Automation Error

答案 2 :(得分:0)

正确处理任何单词实例,你可以使用辅助函数

Function GetWord(objWord As Object) As Boolean
    On Error Resume Next
    Set objWord = GetObject(, "Word.Application") ' try getting an already running instance of Word
    If objWord Is Nothing Then Set objWord = CreateObject("Word.Application")  ' if no running instance of Word then try setting a new one

    GetWord = Not objWord Is Nothing ' return the function result

    If Not GetWord Then MsgBox "Couldn't get Word", vbCritical ' inform the user that something went wrong

因此你的宏可以按如下方式利用它

Sub Word()
    Dim objWord As Object

    If Not GetWord(objWord) Then Exit Sub

    objWord.Visible = True

    ... rest of your code
    End Function

在尝试此解决方案之前,您应关闭excel实例并运行新的Excel表单,以免遭受以前尝试中散布的任何残余字实例

如果这一切都无法解决问题,那么你必须更深入地检查......