VBA - Transfer données Excel vers Word - Method 'Open' of object 'Document

Bonjour,

J'aimerais pouvoir exporter des données qui se situent sur mon document Excel, vers un document Word.

J'ai une trame Word, que je veux remplir (à ce niveau d'avancement, je me demande si c'est plus intéressant de créer depuis Excel systématiquement un nouveau document Word, ou bien de le remplir avec des données, l'enregistrer sous un autre nom, puis le fermer sans l'enregistrer afin de conserver la trame).

Mon document Excel comporte un tableau mis en forme ainsi que des données disséminées à différents endroits (documents mis en PJ).

J'aimerais rapporter ces données dans plusieurs tableaux dans mon document Word puis y intégrer mon tableau mis en forme au centre.

J'ai donc commencé à chercher des moyens d'ouvrir mon document Word, je m'y prends ainsi :

Public Sub gen_devis()
Dim Destination$, chefic$, wd As Word.Document, appWrd As Word.Application
Set appWrd = CreateObject("Word.Application")

Destination = ThisWorkbook.Path & "\Devis\"
If Not Reper(Destination) Then MkDir Destination

    If check_fich(Destination & "Devis_modele_AB-JB.docx") = True Then
        chefic = Destination & "Devis_modele_AB-JB.docx"

        appWrd.Visible = False

        'Set wd= appWrd.Documents. _
        'Open(chefic, ReadOnly:=True)

        Set wd = appWrd.Documents.Open(chefic)        'ERREUR ICI
    Else

    End If

'With wd.Tables(1)
'End with
Function Reper(R As String) As Boolean
    On Error Resume Next:  Reper = GetAttr(R) And vbDirectory
End Function
Function check_fich(lk As String) As Boolean 
Dim F As Object
Set F = CreateObject("Scripting.FileSystemObject")

check_fich = F.FileExists(lk)
Set F = Nothing
End Function

Mais je me retrouve avec un temps d'exécution très lent, jusqu'à recevoir le message suivant :

> "Microsof Excel is waiting for another application to complete an OLE action. "

Je suis obligé d'annuler, j'obiens alors le message :

> Run-time error [...] Method 'Open' of object 'Document' failed.

6word.docx (18.76 Ko)
3test.xlsx (9.42 Ko)

Bonne fin de journée !

Bonjour,

Pour répondre juste à la question du plantage : pour créer un objet application Word, il faut supprimer les majuscules dans "Word.Application" => Set appWrd = CreateObject("word.application").

Cordialement,

Yves

Bonjour Le Drosophile, Cylfo,

Le souci vient que tu as essayé d'ouvrir plusieurs fois un document Word ou que l'application est déjà ouverte.

Le fait de mettre l'application non visible va de plus perturber ton besoin.

appWrd.Visible = False

Préférer faire ainsi. Placer le fichier Excel dans le répertoire Devis ou est situé le modèle du devis.

Sub genDevis_Word()
Dim wdapp As Object
Set wdapp = CreateObject("Word.Application")

    With wdapp
        .Visible = True
        .Activate
'Ouvre le document modèle
        .Documents.Add ThisWorkbook.Path & "\Devis_modele_AB_JB.docx"
'Puis travailler sur ce document ouvert
        With .ActiveDocument
'Ligne de code pour envoyer des données, des valeurs...
        End with
'Une fois cela fait, enregistrer le document actif sous un autre nom, sinon perte du modèle.
'Ensuite fermer l'application Word 

Bonsoir,

Je vous remercie pour votre aide.

J'arrive bien à ouvrir ma trame en effet, reste plus qu'à remplir !

Bonne soirée !

Rechercher des sujets similaires à "vba transfer donnees word method open object document"