Remplissage signet word via excel

desmonts

XLDnaute Junior
Bonjour à toutes et tous


J’ai trouvé un petit code qui permet via un fichier excel de remplir des signets dans un document word.

Cela fonctionne très bien quand le document word est fermé sur mon disque dur.

Ligne B4 va au signet 1, ligne B5 va au signet 2 etc…

Sub Publicontract()
Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Dim i As Byte
Set WordApp = CreateObject("word.application")
Set WordDoc = WordApp.Documents.Open("C:\essaie1.docx")
WordApp.Visible = True
For i = 4 To 7
Set monSignet = WordDoc.Bookmarks("Signet" & i).Range
monSignet.Text = Cells(i, 2)
WordDoc.Bookmarks.Add "Signet" & i, monSignet
Next i
End Sub

Par contre je souhaiterai faire la même chose mais avec le document word déjà ouvert. Avez une idée de ce que je dois modifier ? la ligne en gras italique certainement ?Par avance merci de votre aide.

cordialement
 

tatiak

XLDnaute Barbatruc
Une bonne pratique est de vérifier si le fichier word est ouvert avec un chtite fonction simplex :
VB:
Function Fichier_IsOpen(ByRef tatiak As String) As Boolean
    On Error Resume Next
    Open tatiak For Input Lock Read As #1
    Close #1
    Fichier_IsOpen = (Err.Number <> 0)
End Function

Dès lors c'est simple d'instancier l'appli word :
VB:
If Fichier_IsOpen(Ndf) Then
  Set WordApp = GetObject(, "Word.Application")
  Set WordDoc = WordApp.Documents(Ndf)
Else
  Set WordApp = CreateObject("Word.Application")
  Set WordDoc = WordApp.Documents.Open(Ndf, ReadOnly:=False)
End If
(ici ndf est ta variable fichier word avec chemin)

Pierre
 

desmonts

XLDnaute Junior
Merci pour ton retour Pierre, mais je n'ai pas tout compris, mon fichier word sera déjà ouvert avant de lancer la macro. Non pas depuis mon PC mais depuis un serveur central de mon entreprise donc la variable ndf je peux la nomé par exemple essaie 1 mais je peux pas lui indiqué de chemin. Donc mon besaoin serait d'exécuter la macro excel en allant juste dans le word déjà ouvert sur mon PC nomé essaie1 pour l'exemple mais qui n'est pas enregistré dessus. Je sais pas si je suis très clair :(
 

Lone-wolf

XLDnaute Barbatruc
Bonsoir desmonts, re Pierre :)

Sans l'indication du chemin, c'est Black Out, si tu vois ce que je veux dire.
 

tatiak

XLDnaute Barbatruc
Ok, pas de soucis.
Si un seul doc est ouvert sur ton ordi, il est simple de récupérer son chemin et son nom :
VB:
Dim Wordapp As Object, WordDoc As Object
Dim Ndf As String

  Set Wordapp = GetObject(, "Word.Application")
  Ndf = Wordapp.activedocument.Path & "\" & Wordapp.activedocument.Name
  Set WordDoc = Wordapp.Documents(Ndf)
' ...
Pierre
 

Discussions similaires


Haut Bas