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

VBA Word Discussion :

Pouvoir accéder à un fichier déjà ouvert dans EXCEL, lui-même lancé, sans recréer une instance supplémentaire [Toutes versions]


Sujet :

VBA Word

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Chef d'entreprise
    Inscrit en
    Avril 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chef d'entreprise
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2014
    Messages : 5
    Points : 7
    Points
    7
    Par défaut Pouvoir accéder à un fichier déjà ouvert dans EXCEL, lui-même lancé, sans recréer une instance supplémentaire
    Bonjour

    Je bute sur un problème sans doute tout bête.

    Sujet à traiter : dans un document Word, rapatrier en automatique des images d'un ensemble de plages NOMMÉES.

    Pb résolu : lancer Excel, ouvrir le fichier, trouver la plage, la copier, OK tout va bien !

    Pb non résolu : j'ai modularisé le code à fond, ce qui fait que je veux pouvoir chercher UNE plage, à la demande.
    Dans ce cas, je veux savoir si le fichier de référence auquel je veux accéder est déjà ouvert dans Excel, pour
    ne pas multiplier les ouvertures de ce fichier.

    Voici le code dans sa version actuelle, en ce qui concerne l'ouverture du fichier. L'objet xl est défini globalement pour pouvoir être appelé à la volée par d'autres Sub.

    Le problème est bien isolé : quand je détecte que la tâche Excel est lancée, je l’active, mais je parviens pas à associer mon objet xl à cette tâche existante.
    je pensais dans ce cas que la syntaxe Set xl = CreateObject("excel.application"), en rouge dans le code ci-dessous, allait m'associer ma tache existante, mais non.

    Toute aide est la bienvenue, et fort appréciée.

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    Sub Ouvrir_Controler_Validité_Fichier()
    On Error GoTo Erreur
    Dim Excel_lancé As Boolean
    
    Début:
        
    Excel_lancé = Tasks.Exists("Microsoft Excel")
    
    Select Case Excel_lancé
    '
    '   Si la tâche EXCEL n'existe pas, on la lance
    '
        Case False
    
                Set xl = CreateObject("excel.application")
                xl.Visible = True
            
    '   Si elle existe déjà, on l'active
    '
    
         Case True
            
          With Tasks("Microsoft Excel")
            Essai_Activation = True
            .Activate
            Set xl = CreateObject("excel.application")
             xl.Visible = True
             Essai_Activation = False
           .WindowState = wdWindowStateNormal
          End With
    
    End Select
          
    xl.Workbooks.Open FileName:=Nom_Répertoire_Courant_Diag_EP & "\" & Nom_Fichier_XL_EP, ReadOnly:=True
    
    Exit Sub
        
    Erreur:
    '
    '   Traitement de la situation temporaire où le process existe encore sans l'application en avant-plan
    '   Dans ce cas on TUE le process et on revient à la situation normale où Excel était fermé.
    '
    
       If Essai_Activation = True And Err.Number = 4601 Then
            Tasks("Microsoft Excel").Close
            GoTo Début 'On recommence le process standard de création de la tâche Excel et d'ouverture
       End If
    
        Call A_Communs.CodeErr(Macroencours$, Nom_Répertoire_Courant_Diag_EP & "\" & Nom_Fichier_XL_EP, Err.Number, Err.Description)
            
        Exit Sub
    
    End Sub

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Chef d'entreprise
    Inscrit en
    Avril 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chef d'entreprise
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2014
    Messages : 5
    Points : 7
    Points
    7
    Par défaut Résolu... par un tutoriel du site
    Bon, c'était pas si méchant.

    Encore fallait-il avoir connaissance de la fonction GetObject, et de ses subtilités.

    Merci pour le tutoriel : http://mhubiche.developpez.com/vba/f...endre/binding/

    On peut donc fermer cette demande.

    Merci à l'auteur du tutoriel !

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 11/02/2015, 15h54
  2. Lire des fichiers csv directement dans Excel
    Par thierryppp dans le forum VBScript
    Réponses: 6
    Dernier message: 17/09/2011, 14h05
  3. Réponses: 12
    Dernier message: 16/04/2010, 10h12
  4. [WD14] Vérifier si un fichier est ouvert dans une autre application
    Par Gaautman dans le forum WinDev
    Réponses: 1
    Dernier message: 17/01/2010, 20h07
  5. Réponses: 1
    Dernier message: 16/09/2009, 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