Connaitre le nom de l'application sur laquelle un objet est connecté [Résolu]

Signaler
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
-
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
-
Bonjour à tous

Voila je me connecte à excel par exemple, avec un CreateObject
Du style :

Dim System As Object
Set System = CreateObject("Excel.application")


Mais par moment ma connection se perd.
J'aimerais faire une verification avant d'appeller une fonction de l'OLE

J'ai testé IsNothing() ou IsObject(), mais les deux fonctions me retourne VRAI car ma variable "System" est bien toujours un objet, et n'est pas nothing

Mais ce que je voudrais tester a coup sur, c'est si ma variable est toujours connectée à Excel, pour eviter les messages d'erreur.

J'ai aussi essayé le Debug.Print System.name ou Debug.Print System.Application.name mais la reponse est vide que je sois connecté ou pas.

Bref, y a t'il un moyen de retourner le mot "Excell" pour connaitre non seulement si l'objet est correctement connecté, mais en plus a quelle application (Excell, Word..etc...) ???

Je vous remercie
Bonne journée

5 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
66
j'oubliais :

? oxl.application.Name
Microsoft Excel


Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
66
question interessante.

je viens de faire un simple test.

Dim oXL As Object
Set oXL = CreateObject("Excel.Application")
oXL.Visible = True
Stop


Au Stop, dans la boite de Debug (Ctrl+G) j'ai fait :

? TypeName(oXL)
Application

J'ai fermé Excel, tout en laissant tourner mon code VB

j'ai réitéré :
? TypeName(oXL)
Object


Voilà donc le moyen de savoir si l'objet est deconnecté, sans passer par un On Error.

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
1
Bonjour RENFIELD heureux de te parler à nouveau

Telle la cavalerie, t'es drolement rapide avec ton cheval pour repondre, et en plus....toujours la bonne solution

C'est trop top...ça marche

Je me suis dit super...., j'ai la combine maintenant pour avoir tous les noms de toutes les applications OLE "connectables".

Alors dans mon elan, j'ai essayé apres, une autre connection OLE (Plus difficile celle la) c'est EXTRA
Je ne sais pas si tu connais, c'est un emulateur IBM.

Et la avec tristesse, je m'aperçois, que ça marche pas

Dim System as Object
Set System = CreateObject("EXTRA.System")


L'OLE marche tres bien, mais quand je fais
?TypeName(System)
Object

?System.application.Name
J'ai rien du tout, une ligne vide

Je me disais aussi que BILOU, il aurait pas pu faire quelque chose de simple, qui marche tout le temps

Peut etre parce que le createobject est avec l'extension "system" et non pas "application" ????
Quelle est la différence ???
J'ai regardé, mais "EXTRA.Application", ça existe pas apparement

Tu n'as surement pas EXTRA sur ta machine, mais peut etre qu'un maitre comme toi a une petite idée sur la question ??

En tout cas merci encore de ta rapidité et ta compétence habituelle
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
66
pas la faute à µsoft, ils fournissent le cadre COM/VBA aux autres de faire des choses similaires...

pour le ProgId, tout le monde est libre...

Application, System, on s'amuse comme on veut avec la registry.


au pire, puisque TU fais l'instanciation, TU sais quel est le type d'objet que tu as en face de toi...

tu instancie, tu testes Is Nothing et zou

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
1
Bah c'est justement la qu'est mon probleme.
C'est qu'a un moment, je perd la "connexion"...
Par exemple si EXTRA est fermé, alors que le code tourne comme tu as fait.
Mais l'objet n'est pas nothing, donc j'ai l'impression que je suis coincé entre deux chaises....

L'objet n'est pas nothing, mais quand je passe sur System.session.count, bah parfois, pas tout le temps, j'ai une erreur

Je voulais trouver une solution pour verifier que je suis bien encore connecté a EXTRA sans risquer l'erreur.
Si y'en a pas, je ferais une gestion d'erreur

Dis donc.... tu me donneras la marque de ton lasso ..parce que depuis toutes ces années que tu le tourne...il est toujours pas usé

Encore merci RENFIELD, je te souhaite une excelente journée