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

Messages postés
406
Date d'inscription
lundi 9 juin 2003
Dernière intervention
4 septembre 2013
- - Dernière réponse : cs_andrebernard
Messages postés
406
Date d'inscription
lundi 9 juin 2003
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
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
61
3
Merci
j'oubliais :

? oxl.application.Name
Microsoft Excel


Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 120 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Renfield
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
61
0
Merci
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
Commenter la réponse de Renfield
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Dernière intervention
4 septembre 2013
1
0
Merci
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
Commenter la réponse de cs_andrebernard
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
61
0
Merci
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
Commenter la réponse de Renfield
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Dernière intervention
4 septembre 2013
1
0
Merci
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
Commenter la réponse de cs_andrebernard

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.