Connaitre le nom de l'application sur laquelle un objet est connecté

Résolu
cs_andrebernard Messages postés 404 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 4 septembre 2013 - 8 avril 2010 à 12:40
cs_andrebernard Messages postés 404 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 4 septembre 2013 - 8 avril 2010 à 14:34
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

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
8 avril 2010 à 12:57
j'oubliais :

? oxl.application.Name
Microsoft Excel


Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
8 avril 2010 à 12:55
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
0
cs_andrebernard Messages postés 404 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 4 septembre 2013 1
8 avril 2010 à 13:50
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
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
8 avril 2010 à 14:12
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_andrebernard Messages postés 404 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 4 septembre 2013 1
8 avril 2010 à 14:34
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
0
Rejoignez-nous