IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Fermer tous les Word ouvert [XL-365]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Janvier 2006
    Messages
    1 220
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 220
    Par défaut Fermer tous les Word ouvert
    Bonjour,

    J'ai créé la macro ci-dessous qui a pour but de fermer tous les fichiers Word encore ouvert sur un serveur.
    J'ai créé une tâche batch planifié qui lance donc ce fichier tous les jours.
    Quand je test manuellement c'est à dire j'ouvre un Word sur le serveur puis j'exécute ma tâche planifiée, la macro fait le travail.
    En revanche en automatique lorsqu'un fichier reste réellement ouvert la nuit et que la tâche se lance il ne se passe rien. Même si je lance par la suite la tâche planifié manuellement.

    La seule différence que je vois entre mon test et la partie automatique, c'est que le Word qui reste ouvert en entête il y a le nom du fichier puis entre croche [Mode comptatibilité]

    Est-ce que cela peut venir de là ?

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Private Sub Workbook_Open()
     
        Dim objWord As Object
        Dim blnHaveWorkObj As Boolean
     
        ' assume a Word object is there to be quit
        blnHaveWorkObj = True
     
        ' loop until no Word object available
        Do
            On Error Resume Next
            Set objWord = GetObject(, "Word.Application")
            If objWord Is Nothing Then
                ' quit loop
                blnHaveWorkObj = False
            Else
                ' quit Word
                objWord.Quit
                ' clean up
                Set objWord = Nothing
            End If
        Loop Until Not blnHaveWorkObj
     
    Application.Wait Now + TimeValue("0:00:05")
     
    Application.DisplayAlerts = False
    Application.Quit
     
     
     
    End Sub

  2. #2
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Salut, voici une approche un peu plus compacte qui évite le test if. Je ne sais pas si ça changera quelque chose pour ton test mais sait-on jamais ?
    Attention, aucune confirmation n'est demandée, donc si un document n'a pas été sauvegardé il est perdu.
    Le mode compatibilité s'affiche quand le document est ouvert dans un Word plus récent que dans le Word qui a créé le document. Cela peut perturber le comportement de Word.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub FermerToutesApplicationsWord()
        Dim wdApp As Object
     
        ' Parcourt toutes les applications Word ouvertes
        For Each wdApp In GetObject(, "Word.Application")
            ' Ferme l'application
            wdApp.Quit
        Next wdApp
     
        ' Libère l'objet
        Set wdApp = Nothing
    End Sub

  3. #3
    Membre éprouvé
    Inscrit en
    Janvier 2006
    Messages
    1 220
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 220
    Par défaut
    Bonjour,

    Merci pour votre retour.
    Le souci avec votre macro je pense que cela vient de là, c'est s'il n'y a pas de Word resté ouvert, j'ai obtenu çà ce matin :

    Nom : Capture d’écran 2023-04-19 085055.png
Affichages : 356
Taille : 26,1 Ko

  4. #4
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Avez-vous vérifié que la librairie Microsoft Word est référencée dans l'éditeur VBA ?

  5. #5
    Membre éprouvé
    Inscrit en
    Janvier 2006
    Messages
    1 220
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 220
    Par défaut
    Bonjour,
    Vous parlez de celle-ci ?

    Nom : Capture.JPG
Affichages : 280
Taille : 40,6 Ko

  6. #6
    Membre éprouvé
    Inscrit en
    Janvier 2006
    Messages
    1 220
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 220
    Par défaut
    Car j'ai le même message.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [FAQ] Fermer tous les formulaires ouverts
    Par guigui5931 dans le forum Contribuez
    Réponses: 19
    Dernier message: 15/02/2024, 16h57
  2. [WD-2016] Fermer tous les Word ouvert
    Par leloup84 dans le forum VBA Word
    Réponses: 1
    Dernier message: 03/04/2023, 21h34
  3. [AC-2013] Fermer tous les formulaire ouvert et ouvrire un seule
    Par m_charmat dans le forum Access
    Réponses: 10
    Dernier message: 01/11/2015, 00h09
  4. Réponses: 9
    Dernier message: 10/06/2015, 17h17
  5. Comment fermer tous les modules ouverts
    Par chim33 dans le forum VBA Access
    Réponses: 2
    Dernier message: 03/02/2009, 14h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo