Microsoft 365 Ouverture fermeture de Word (boucle)

Fab117

XLDnaute Impliqué
Hello,
Dans le cadre de mon projet, Job75 et Soan m'ont aidé sur la première partie (fermeture de Word) Lien vers première discussion
Par contre, lorsque j'inclus l'ouverture et la fermeture de Word dans une boucle, ça ne fonctionne que pour la première itération :
VB:
Sub Test374()

        For i = 1 To 3
            Dim Wapp As Object, doc As Object
            On Error Resume Next 'si Word n'est pas ouvert
            Set Wapp = GetObject(, "Word.Application")
            If Wapp Is Nothing Then Set Wapp = CreateObject("Word.Application")
            Wapp.Visible = True
            Wapp.Activate
                With Wapp
                    .Documents.Add
                    With .ActiveWindow.Selection
                        .TypeText "Test fonctionnement sur Word" & vbLf & vbLf
                        .TypeText "Ligne 2" & vbLf
                    End With
                End With
            Application.Wait Now + 3 / 86400 'attente 5 secondes pour tester
            For Each doc In Wapp.Documents: doc.Saved = True: Next 'pas d'enregistrement demandé
            Wapp.Quit 'ferme Word
            Application.Wait Now + 3 / 86400 'attente 5 secondes pour tester
        Next i
End Sub

Quelqu'un saurait-il pourquoi Word ne se réouvre pas dès la 2ème itération ?
Merci d'avance.

Fab
 

Fab117

XLDnaute Impliqué
Trouvé.
Il fallait rajouter "Set Wapp = Nothing" à la fin de la boucle.
Code complet si ça intéresse quelqu'un :

VB:
Sub Test374()

        For i = 1 To 3
            Dim Wapp As Object, doc As Object
            On Error Resume Next 'si Word n'est pas ouvert
            Set Wapp = GetObject(, "Word.Application")
            If Wapp Is Nothing Then Set Wapp = CreateObject("Word.Application")
            Wapp.Visible = True
            Wapp.Activate ' Met Word en premier plan
                With Wapp
                    .Documents.Add
                    With .ActiveWindow.Selection
                        .TypeText "Test fonctionnement sur Word" & vbLf & vbLf
                        .TypeText "Ligne 2" & vbLf
                    End With
                End With
            Application.Wait Now + 3 / 86400 'attente 5 secondes pour tester
            For Each doc In Wapp.Documents: doc.Saved = True: Next 'pas d'enregistrement demandé
            Wapp.Quit 'ferme Word
            Application.Wait Now + 3 / 86400 'attente 5 secondes pour tester
            Set Wapp = Nothing
        Next i

End Sub

Excellente fin de journée

Fab
 

Discussions similaires

Statistiques des forums

Discussions
311 733
Messages
2 082 019
Membres
101 872
dernier inscrit
Colin T