Bonjour,
Comme c'est indiqué dans le titre, je souhaite vérifier si un document Word est déjà ouvert (avant de l'ouvrir par macro depuis Excel).
J'ai vu la solution que propose SilkyRoad :
mais elle ne me convient pas car selon moi l'erreur peut aussi venir du fait que le document n'est pas à l'emplacement désiré (ou que le nom du fichier a changé)...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Sub ControleSiDocumentWordOuvert() Dim Appli As Word.Application Dim WordDoc As Word.Document 'nécéssite d'activer la reference Microsoft word xx.x 0bject Library On Error Resume Next Set Appli = GetObject(, "Word.Application") Set WordDoc = Appli.Documents("C:\Documents and Settings\dossier\monFichier.doc") On Error GoTo 0 If WordDoc Is Nothing Then MsgBox "Le document est fermé" Else MsgBox "Le document est ouvert" 'WordDoc.Close 'fermeture application Word End If End Sub
Je souhaitais donc faire quelque chose du genre (adapté depuis un code qui fonctionne pour le test avant l'ouverture d'un document Excel) mais je ne parviens pas à trouver le fichier quand il est ouvert. J'ai l'impression que le programme ne rentre pas dans la boucle for...
Auriez-vous des pistes pour vérifier que le document existe bien à l'emplacement donné et qu'il n'est pas ouvert ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 Dim wordDoc As WORD.Document Dim wordApp As WORD.Application chemin = ThisWorkbook.Path ' Nom du chemin pour accéder au dossier de l'opération Set wordApp = CreateObject("Word.Application") DoEvents 'laisse le temps à l'application de s'ouvrir existe_deja = False For Each wordDoc In GetObject(, "Word.Application").Documents ' vérification que le fichier ne soit pas déjà ouvert If wordDoc.Name Like "*" & temp_att_ac & "*" Then ' temp_att_ac : nom du rapport type MsgBox ("Veuillez fermer le rapport type.") existe_deja = True End If Next wordDoc If existe_deja = False Then On Error GoTo AbsDoc Set wordDoc = wordApp.Documents.Open(chemin & "\" & dossier_temp & "\" & temp_att_ac & ".docx") ' Ouvre le rapport type On Error GoTo 0 ' arrêt de la gestion d'erreur associée à l'ouverture du fichier [...code...] End If AbsDoc: MsgBox ("ERREUR : Impossible de trouver le rapport type à l'emplacement suivant : " & chemin & "\" & dossier_temp & "\" & temp_att_ac & ".docx")
Merci d'avance.
Bonne journée






Répondre avec citation










Partager