Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

Creating Word Application using Excel VBA: Run-time error '429': ActiveX component can't create object

Ask Question

When I debug, the error comes from the line: Set wrdApps = CreateObject("Word.Application") .

It was working, then it started giving me this error.

Sub saveDoc()
Dim i As Integer
For i = 1 To 2661:
    Dim fname As String
    Dim fpath As String
    With Application
        .DisplayAlerts = False
        .ScreenUpdating = False
        .EnableEvents = False
    End With
    fname = ThisWorkbook.Worksheets(3).Range("H" & i).Value
    fpath = ThisWorkbook.Worksheets(3).Range("G" & i).Value
    Dim wrdApps As Object
    Dim wrdDoc As Object
    Set wrdApps = CreateObject("Word.Application")
    'the next line copies the active document- the ActiveDocument.FullName 
    ' is important otherwise it will just create a blank document
    wrdApps.documents.Add wrdDoc.FullName
    Set wrdDoc = wrdApps.documents.Open(ThisWorkbook.Worksheets(3).Range("f" & i).Value)
    ' do not need the Activate, it will be Activate
    wrdApps.Visible = False  
    ' the next line saves the copy to your location and name
    wrdDoc.SaveAs "I:\Yun\RTEMP DOC & PDF\" & fname
    'next line closes the copy leaving you with the original document
    wrdDoc.Close
    On Error GoTo NextSheet:
NextSheet:
    Resume NextSheet2
NextSheet2:
Next i
With Application
   .DisplayAlerts = True
   .ScreenUpdating = True
   .EnableEvents = True
End With
End Sub
                This post on OzGrid may help. Only difference I saw from what you have is that wrd.Apps would be set as Word.Application and wrd.Doc would be set as Word.Document.
– chuff
                Jun 26, 2013 at 18:26
                try running a repair on Office, and restart your pc ... the code you have CreateObject("Word.Application") should work fine
– Our Man in Bananas
                Jun 27, 2013 at 11:42
                if the object you are trying to "get" has elevated privileges. it will return the 429 Error - dont open as administrator
– Hightower
                Dec 13, 2017 at 14:45

I had an issue when upgrading from Windows 7 to 10 when bringing my hoard of VBA scripts with me. Still not sure what the root cause of the error is, but in the mean time this piece of code worked for me. This is a workaround that limits the need to have Word (or Outlook/Excel) already in open (manually) state, but should allow your script to run if you have your references set. Just change "CreateObject(" to "GetObject(, ". This will tell the system to use an already open window.

The complete code to use would be:

Dim wrdApps As Object
Dim wrdDoc As Object
Set wrdApps = GetObject(, "Word.Application")

I recently had this happen to some code I had written. Out of nowhere (after running successfully for a few months), I would get the same Runtime Error '429'. This happened on two separate computers, the one I wrote and tested the code on months prior and the computer of the person who actually used the tool. It happened even though I used the original file on my machine and the user had been using his copy successfully for a few months, so I'm not convinced two separate files on two separate machines both got corrupted in the same manner. With that being said, I don't have a good explanation of why this occurred. Mine would happen on a similar line of code:

Dim objFSO as Object
Set objFSO = CreateObj("Scripting.FileSystemObject")

I had the reference to the scripting library included and had done this successfully in the past.

I was able to fix the problem by changing from late to early binding on that object:

Dim objFSO as New Scripting.FileSystemObject

I have been switching everything over to early binding for some time now but this was some legacy code. A nice short little explanation on the difference between the two can be found here: https://excelmacromastery.com/vba-dictionary/#Early_versus_Late_Binding

I'm not entirely certain why that fixed the problem, but hopefully it will help others in the future with similar issues.

Is wrdDoc initialised? Are you trying to use wrdDoc before the object has been Set?

wrdApps.documents.Add wrdDoc.FullName
Set wrdDoc = wrdApps.documents.Open(ThisWorkbook.Worksheets(3).Range("f" & i).Value)

Should the first line be ActiveDocument.FullName as in the comments? So:

wrdApps.documents.Add ActiveDocument.FullName

Check that you have the Microsoft Excel Object Library and the Microsoft Office Object Library ticked in Tools > References and that they have been registered.

If they are ticked, you may need to run Detect and Repair from the Excel Help menu to make sure that the Office installation hasn't corrupted in any way.

In my case, the workbook appeared to be corrupted. Simply assigning a worksheet to a variable was throwing the error.

Dim ws as Worksheet
Set ws = ThisWorkbook.Worksheets("Data")

The workbook came directly from the client, so I'm not sure what they did with it, or how old it was but all the references appeared to be selected. Every other workbook with the same code was working correctly.

So to resolve the issue I copied the worksheets and modules to a new workbook and it worked without any issues.

Might not always be the best solution, but if you haven't got any worksheets and modules, then it's pretty easy.

It's seems to be linked to the presence of a second "ThisWorkbook" object, in my case.

Excel VBA Project has generated multiple Workbook objects

No other solution found that the one in this link. I didn't try it myself, though.

Try this one.. i've encountered this a lot of time...

so I just run my excel by searching it (located on taskbar), then right click then "run as administrator" or if you already created the excel file, open it from file>open>browse. avoid just double clicking the excel file to open directly.

Thanks for contributing an answer to Stack Overflow!

  • Please be sure to answer the question. Provide details and share your research!

But avoid

  • Asking for help, clarification, or responding to other answers.
  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.