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

VB.NET Discussion :

Parcours d'instances d'excel - CreateBindCtx [Débutant]


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 11
    Points : 10
    Points
    10
    Par défaut Parcours d'instances d'excel - CreateBindCtx
    Bonjour,

    J'utilise Visual Studio Express 2010 pour faire une petite appli windowsForm (Visual Basic).
    Dans cette appli j'ai besoin de parcourir toutes les instances des processus Excel en cours.

    J'ai trouvé pas mal d'info sur le sujet, mais ça utilise la fonction "CreateBindCtx".

    Cette fonction est inconnue de mon projet Visual Studio et je n'arrive pas à y faire référence (je ne sais pas comment faire le Dllimport ou bien comment ajouter la référence).

    Pouvez vous m'aider ?

    Merci d'avance.

  2. #2
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Regarde si ceci te convient :
    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
     
        Private Sub Button1_Click(ByVal sender As System.Object, _
                                  ByVal e As System.EventArgs) Handles Button1.Click
     
            MsgBox(NBProcessExcel)
     
        End Sub
     
        Private Function NBProcessExcel() As Integer
     
            Dim Wmi As Object
            Dim Process As Object
            Dim NB As Integer
     
            Wmi = GetObject("winmgmts:root\cimv2")
     
            For Each Process In Wmi.ExecQuery("select * from win32_process")
     
                If UCase(Process.Name) = "EXCEL.EXE" Then NB = NB + 1
     
            Next
     
            NBProcessExcel = NB
     
        End Function
    Hervé.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    Bonsoir,

    Merci pour ta réponse.

    J'ai trouvé sur un autre site la façon d'utiliser CreateBindCtx.
    Il faut faire une déclaration préalable du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Declare Function CreateBindCtx Lib "ole32.dll" (ByVal reserved As Int32, ByRef ppbc As ComTypes.IBindCtx) As Integer
    C'était ce qu'il manquait dans mon code car je ne connaissait pas cette syntaxe.

    Maintenant, j'ai plusieurs solutions pour parcourir les instances, en incluant la tienne.

    Je vais voir quelle est la plus simple à mettre en oeuvre, l'objectif étant de récupérer un objet excel.application afin d'accéder au contenu des workbooks.

    Merci encore,

    t

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    Bonsoir,

    J'ai finalement choisi la solution de parcourir les instances Excel en utilisant les monikers (parcours de la ROT, identification des monikers et lien vers les instances).

    J'arrive assez facilement à trouver toutes les instances. Cependant cette solution n'est pas "intuitivement évidente". Je ne comprends pas tout dans le détail mais ça fonctionne plutôt bien.

    @ très bientôt,

    t

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

Discussions similaires

  1. 2 instances d'excel
    Par did103 dans le forum Excel
    Réponses: 2
    Dernier message: 10/11/2008, 19h10
  2. Réponses: 1
    Dernier message: 19/03/2008, 09h51
  3. Parcours d'un fichier Excel
    Par mouaa dans le forum VBA Access
    Réponses: 2
    Dernier message: 30/01/2008, 08h46
  4. parcours d'une feuille excel a partir du vb
    Par nawla dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 12/04/2007, 11h17
  5. [VB2005]obliger windows à ouvrir une deuxième instance d'excel
    Par Gilles_37 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 12/10/2006, 05h23

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