Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Instance Excel sous VB6

4 réponses
Avatar
Rodryg
Bonjour,

Comment faire pour rendre active, dans mon programme en VB6, une instance
d'EXCEL déjà ouverte par un autre programme. J'arrive à détecter qu'un
processus EXCEL.EXE tourne sur ma machine mais je ne sais pas détecter le
nom du classeur ouvert ni celui de la feuille active, ni activer celle-ci.

Quelqu'un a un idée? Merci à tous.

Rodryg

4 réponses

Avatar
Fred
Dans son message 429b2c8e$0$25795$
Rodryg nous dit :

Bonjour,

Comment faire pour rendre active, dans mon programme en VB6, une
instance d'EXCEL déjà ouverte par un autre programme. J'arrive à
détecter qu'un processus EXCEL.EXE tourne sur ma machine mais je ne
sais pas détecter le nom du classeur ouvert ni celui de la feuille
active, ni activer celle-ci.
Quelqu'un a un idée? Merci à tous.

Rodryg



Bonjour,
As-tu essayé ceci ?
8<----------
Dim oXL As Excel.Application
Set oXL = GetObject("Excel.Application")
8<----------
(j'ai testé en vbs pas en vb6)
Cela retourne bien l'instance active d'excel et tout ce qui s'ensuit.


--
Fred
Avatar
rodryg
En effet ca retourne bien la session mais je ne sais pas comment récupérer
le nom du classeur et de la feuille active. Quelle est la syntaxe ?
(oXL.workbook.name ?)

Merci beaucoup

Rodryg

"Fred" a écrit dans le message de news:

Dans son message 429b2c8e$0$25795$
Rodryg nous dit :

Bonjour,

Comment faire pour rendre active, dans mon programme en VB6, une
instance d'EXCEL déjà ouverte par un autre programme. J'arrive à
détecter qu'un processus EXCEL.EXE tourne sur ma machine mais je ne
sais pas détecter le nom du classeur ouvert ni celui de la feuille
active, ni activer celle-ci.
Quelqu'un a un idée? Merci à tous.

Rodryg



Bonjour,
As-tu essayé ceci ?
8<----------
Dim oXL As Excel.Application
Set oXL = GetObject("Excel.Application")
8<----------
(j'ai testé en vbs pas en vb6)
Cela retourne bien l'instance active d'excel et tout ce qui s'ensuit.


--
Fred





Avatar
Fred
Dans son message 429b3c09$0$10413$
rodryg nous dit :

"Fred" a écrit dans le message de news:

Dans son message 429b2c8e$0$25795$
Rodryg nous dit :

Bonjour,

Comment faire pour rendre active, dans mon programme en VB6, une
instance d'EXCEL déjà ouverte par un autre programme. J'arrive à
détecter qu'un processus EXCEL.EXE tourne sur ma machine mais je ne
sais pas détecter le nom du classeur ouvert ni celui de la feuille
active, ni activer celle-ci.
Quelqu'un a un idée? Merci à tous.

Rodryg



Bonjour,
As-tu essayé ceci ?
8<----------
Dim oXL As Excel.Application
Set oXL = GetObject("Excel.Application")
8<----------
(j'ai testé en vbs pas en vb6)
Cela retourne bien l'instance active d'excel et tout ce qui s'ensuit.


--
Fred





En effet ca retourne bien la session mais je ne sais pas comment
récupérer le nom du classeur et de la feuille active. Quelle est la
syntaxe ? (oXL.workbook.name ?)

Merci beaucoup

Rodryg




oXL.ActiveWorkbook ?

sinon l'objet Application possède une collection WorkbookS (avec un S) qui
contient tous les classeurs ouverts.
De même chaque workbook (sans S) élément de la collection, contient une
collection WorkSheetS (avec un S) d'objets de type worksheet (sans S) ;-)
Pour avoir la feuille active je crois me souvenir que c'est ActiveSheet ou
ActiveWorkSheet.

L'auto-complétion cela aide bien.
Ajoute Excel dans les références de ton projet et déclare chacune de
variables :
exemple :
8<-------
Dim oXL As Excel.Application
Set oXL = GetObject("Excel.Application")

Dim oWorkBook As Excel.WorkBook
Set oWorkBook = oXL.ActiveWorkBook

Dim oWorkSheet as Excel.WorkSheet
Set oWorkSheet = oWorkBook.ActiveSheet 'pas sûr
8<----------

--
Fred
Avatar
Hervé
Bonsoir,
Sans cocher la référence à Excel, mais il faut connaître les méthodes et
propriétés (il vaux mieux cocher pour disposer des listes de choix des
méthodes et propriétés) adapte le code à tes besoins :

Private Sub Command1_Click()
'sans référence (moins rapide !)
Dim AppExcel As Object
Dim Cls As Object
Dim Fe As Object

'évite l'erreur de l'appli fermée
On Error Resume Next
Set AppExcel = GetObject(, "Excel.Application")

'recherche dans la collection de classeurs
'si il y en a un qui se nomme Classeur1.xls
'et affiche le message en concéquence
For Each Cls In AppExcel.workbooks
If Cls.Name = "Classeur1.xls" Then
Set Fe = Cls.worksheets("Feuil1")
Exit For
End If
Next Cls
If Fe Is Nothing Then
MsgBox "Pas trouvé :o(("
Else
MsgBox "Youpie, trouvé :o))"
Fe.[A1] = "Ecris ce que tu veux !"
End If

Set Fe = Nothing
Set Cls = Nothing
Set AppExcel = Nothing
End Sub

Hervé.

"Rodryg" a écrit dans le message news:
429b2c8e$0$25795$
Bonjour,

Comment faire pour rendre active, dans mon programme en VB6, une instance
d'EXCEL déjà ouverte par un autre programme. J'arrive à détecter qu'un
processus EXCEL.EXE tourne sur ma machine mais je ne sais pas détecter le
nom du classeur ouvert ni celui de la feuille active, ni activer celle-ci.

Quelqu'un a un idée? Merci à tous.

Rodryg