2013-06-26 26 views
6

Próbuję zapisać dokument Worda za pomocą programu Excel VBA, ale pojawia się błąd "Składnik ActiveX nie może utworzyć obiektu".Błąd wykonania "429": Składnik ActiveX nie może utworzyć obiektu VBA

Po debugowaniu błąd pochodzi z wiersza: Set wrdApps = CreateObject("Word.Application"). To działało dobrze, ale potem zaczęło dawać mi ten błąd. Czy ktoś wie, jak to naprawić? Dzięki za pomoc!

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 
+0

** [Ten post] (http://www.ozgrid.com/forum/showthread.php?t=50936) ** na OzGrid może pomóc. Jedyną różnicą, jaką widziałem z tego, co masz, jest to, że wrd. Apki będą ustawione jako Word.Application i wrd.Doc będą ustawione jako Word.Document. – chuff

+0

spróbuj uruchomić naprawę w pakiecie Office i zrestartuj komputer ... kod, który masz 'CreateObject (" Word.Application ")' powinien działać dobrze –

+0

, jeśli obiekt, który próbujesz "zdobyć" ma podwyższone uprawnienia. zwróci błąd 429 - nie otwieraj jako administrator – Hightower

Odpowiedz

0

Czy inicjuje się wrdDoc? Czy próbujesz użyć wrdDoc przed ustawieniem obiektu?

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

Czy pierwsza linia powinna być ActiveDocument.FullName jak w komentarzach? Więc:

wrdApps.documents.Add ActiveDocument.FullName 
0

Sprawdź, czy masz Object Library Microsoft Excel i Microsoft Office Object Library zaznaczone w Narzędzia> Referencje i że zostały one zarejestrowane.

Jeśli są zaznaczone, może być konieczne uruchomienie Wykryj i napraw z menu Pomoc programu Excel, aby upewnić się, że instalacja pakietu Office nie została w żaden sposób uszkodzona.