web-dev-qa-db-fra.com

Erreur d'exécution '429': le composant ActiveX ne peut pas créer d'objet VBA

J'essaie d'enregistrer des documents Word à l'aide d'Excel VBA, mais l'erreur "Le composant ActiveX ne peut pas créer d'objet". 

Lorsque je débogue, l'erreur provient de la ligne: Set wrdApps = CreateObject("Word.Application"). Il fonctionnait bien, mais il a juste commencé à me donner cette erreur. Est-ce que quelqu'un sait comment réparer ceci? Merci pour l'aide!

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
9
user2525309

WrdDoc est-il initialisé? Essayez-vous d'utiliser wrdDoc avant que l'objet ait été défini?

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

La première ligne doit-elle être ActiveDocument.FullName comme dans les commentaires? Alors:

wrdApps.documents.Add ActiveDocument.FullName
1
Simon Shirley

J'ai eu un problème lors de la mise à niveau de Windows 7 à 10 lorsque j'ai apporté mon stock de scripts vba. Je ne sais toujours pas quelle est la cause première de l'erreur, mais entre-temps, ce morceau de code a fonctionné pour moi . Il s'agit d'une solution de contournement qui limite la nécessité d'avoir Word (ou Outlook/Excel) déjà dans open (manuellement), mais doit permettre à votre script de s'exécuter si vous avez défini vos références. Il suffit de remplacer "CreateObject (") par "GetObject (,". Cela indiquera au système d’utiliser une fenêtre déjà ouverte. 

Le code complet à utiliser serait:

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

Vérifiez que la bibliothèque d'objets Microsoft Excel et la bibliothèque d'objets Microsoft Office sont cochées dans Outils> Références et qu'elles ont été enregistrées.

Si elles sont cochées, vous devrez peut-être exécuter la fonction Détecter et réparer à partir du menu Aide d'Excel pour vous assurer que l'installation d'Office n'est pas corrompue.

1
Simon Shirley