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 :

Verifier qu'un fichier Word est ouvert à partir de VBA Excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 37
    Par défaut Verifier qu'un fichier Word est ouvert à partir de VBA Excel
    Bonjour à tous,

    Je vous ecris car je lance une macro à partir de VBA Excel, qui ouvre un fichier Word, et j'ai mis une condition pour verifier si ce fichier Word n'est pas déjà ouvert, mais cela ne marche pas tout le temps, jai souvent le message d'erreur suivant :
    Le serveur distant n'existe pas ou n'est pas disponible (erreur 462)
    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Set FichierWord = GetObject("D:\Fichier.doc")
     
    If FichierWord = ActiveDocument Then
        MsgBox "Le fichier Word de référence est ouvert, veuillez fermer le fichier Word pour que les données puissent être copié."
        Exit Sub
    End If
    Merci pour vos réponses

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Le code que tu nous mets ne peux pas fonctionner. Si tu ouvres un doc word depuis Excel, tu crées une instance de l'application et du document.
    Montre-nous le code que tu utilises pour lancer word et ouvrir le fichier, c'est lui qui nous intéresse

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 37
    Par défaut
    Voila le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Set FichierWord = Nothing
    Set wrdapp = CreateObject("Word.Application")
    Set wrddoc = wrdapp.Documents.Open("D:\Fichier.doc")
    wrdapp.Visible = True
    Merci de ton aide!!!

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Set wrdapp = CreateObject("Word.Application")
    DoEvents 'laisse le temps à l'application de s'ouvrir
    Set wrddoc = wrdapp.Documents.Open("D:\Fichier.doc")
    DoEvents 'laisse le temps au document de s'ouvrir
    wrdapp.Visible = True
    'If wrddoc is nothing then msgbox "le document D:\Fichier.doc est fermé ou n'existe pas."
    Pour ton test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Set FichierWord = GetObject("D:\Fichier.doc")
     
    If FichierWord = wrdapp.ActiveDocument Then
        MsgBox "Le fichier Word de référence est ouvert, veuillez fermer le fichier Word pour que les données puissent être copié."
        Exit Sub
    End If
    Mais je ne suis pas certain d'avoir toutes les données

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 37
    Par défaut
    Merci, mais cela ne fonctionne pas, l'ordre de mon programme est le suivant :
    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
    Sub ExporterVersWord()
     
    Dim Titre As String, FichierWord, wrdapp, wrddoc
     
    Set FichierWord = GetObject("D:\Fichier.doc")
     
    If FichierWord = ActiveDocument Then
        MsgBox "Le fichier Word de référence est ouvert, veuillez fermer le fichier Word pour que les données puissent être copié."
        Exit Sub
    End If
     
     
    Set FichierWord = Nothing
    Set wrdapp = CreateObject("Word.Application")
    DoEvents
    Set wrddoc = wrdapp.Documents.Open("D:\Fichier.doc")
    DoEvents
    wrdapp.Visible = True
    If wrddoc Is Nothing Then MsgBox "le document D:\Fichier.doc est fermé ou n'existe pas."
    End Sub

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    C'est tout de suite mieux quand on a tout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub ExporterVersWord()
    Dim Titre As String, FichierWord as object, wrdapp, wrddoc
        On Error Resume Next
        Set FichierWord = GetObject("D:\Fichier.doc")
        If Not FichierWord Is Nothing Then
            MsgBox "Le fichier Word de référence est ouvert, veuillez fermer le fichier Word pour que les données puissent être copié."
            On Error GoTo 0
            Exit Sub
        End If
        'La suite

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 37
    Par défaut
    C'est pareil chez moi, mon programme de départ
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Set FichierWord = GetObject("D:\Fichier.doc")
    If FichierWord = ActiveDocument Then
        MsgBox "Le fichier Word de référence est ouvert, veuillez fermer le fichier Word pour que les données puissent être copié."
        Exit Sub
    End If
     
     
    Set FichierWord = Nothing
    Set wrdapp = CreateObject("Word.Application")
    Set wrddoc = wrdapp.Documents.Open("D:\Fichier.doc")
    wrdapp.Visible = True
    marchait des fois et d'autres fois pas.

    En fait le problème provient de l'erreur 462 (Le serveur distant n'existe pas ou n'est pas disponible ) qui apparait que certaines fois.

    Du coup, j'avais modifié ma boucle if en rajoutant une condition de comptage des document word
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    If Documents.Count >= 1 Then
    Else
    If FichierWord = ActiveDocument Then
        MsgBox "Le fichier Word de référence est ouvert, veuillez fermer le fichier Word pour que les données puissent être copié."
        Exit Sub
    End If
    End If
    ouvert et la j'ai eu l'erreur 4248 qui est apparu (commande indisponible : auncun document n'est ouvert)

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

Discussions similaires

  1. Savoir si un fichier word est ouvert
    Par enchanté dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 11/01/2008, 10h54
  2. Réponses: 20
    Dernier message: 11/12/2007, 17h34
  3. Réponses: 2
    Dernier message: 31/10/2007, 10h30
  4. Savoir si un fichier texte est ouvert ?
    Par devl83 dans le forum Administration système
    Réponses: 4
    Dernier message: 22/05/2007, 17h00
  5. Tester si un fichier X est ouvert
    Par James64 dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 06/10/2004, 15h48

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