XL 2016 instruction CreateObject("") / ActiveX ??

vgendron

XLDnaute Barbatruc
bonjour à tous

en ces temps heureux, j'ai tout le loisir de me bruler les neurones à chercher à comprendre le codage d'une application vba développée par un prédécesseur

Globalement, cette application "GTA" sert à générer des fichiers python et des fichiers .ini (dans les deux cas... ca peut se résumer à des lignes de texte....)
ensuite.. l'application pilote une autre appli "AutomationDesk de dSpace" pour lancer l'execution des fichiers python et INi, récupérer le résultat dans un fichier ini créé par l'application Automation Desk..
de la meme manière que excel peut piloter Word ou la calculatrice, il est donc necessaire de créer une "instance" de l'application
pour Automation desk, je vois donc cette ligne de code
set ADObj=createobject("AutomationDesk.tam")

De ce que j'ai pu lire: createObject permet de charger un ActiveX avec toutes les méthodes et propriétés associées à cet objet.
je vois ainsi d'autres lignes telles que
set AdRep=ADObj.reports
set AdRes=AdObj.results

Avec le code tel que, je ne peux que constater les méthodes utilisées et me faire une idée d'après leur nom..
MAIS: lorsque j'édite moi meme le code, la saisie automatique ne fonctionne pas pour cet objet "ADObj"
à noter: la saisie semi automatique pour un objet dictionary fonctionne très bien..
donc.. je présume que l'ActiveX associé à l'instruction createObject est manquant sur mon pc perso - Meme si la ligne "createObject" ne provoque pas de bug..??..
THE question: comment savoir s'il me manque effectivement un fichier (genre .ocx) et lequel est manquant??

je ne vous embrasse pas. on a pas le droit :-D
 

eriiic

XLDnaute Barbatruc
Bonjour à tous,

S'il te manque une bibliothèque elle apparait notée [Manquant] dans Outils / Ressources... de VBE.

Je peux me tromper mais j'ai l'impression que ta question concerne l'intellisense (l'autocomplétion).
Avec set ADObj=createobject("AutomationDesk.tam") je comprend que tu déclares tes objets en late binding, or l'intellisense n'est présent que si l'objet est déclaré en early binding (style Dim AppWord As New Word.Application).
A toi de changer les déclarations, quitte à revenir en late binding après développement si tu ne veux pas être tributaire de la version installée sur le poste.
eric
 

vgendron

XLDnaute Barbatruc
Hello
@jmfmarques : y a t il un moyen de voir en amont si l'automation est supportée par l'activeX
est ce une option qu'on peut ou pas activer.? je n'y connais strictement rien en ActiveX.. au point que je ne sais meme pas ce que c'est.. :-D

@eriiiic : effectivement, l'autocomplétion est ce qui me manque
je vais aller voir si la declaration en early binding change quelque chose (encore un terme que je découvre)

je viens de gagner 15jours de confinement.. donc ca va m'occuper un peu :-D
 

jmfmarques

XLDnaute Accro
y a t il un moyen de voir en amont
si l'automation est supportée par l'activeX
Aucun à ma connaissance.
L'automation n'est mise en oeuvre que pour "piloter" l'objet qui la supporte. Cela implique :
- qu'on sait déjà qu'elle supporte l'automation
- qu'on connait le code qu'elle utilise et les instructions à lui passer dans ce code.

J'ai dans ces conditions beaucoup de mal à imaginer que l'on veuille "voir" si l'on peut "piloter" sans savoir tout cela de l'application à piloter. il y aurait là une forme de paradoxe.
 
Dernière édition:

eriiic

XLDnaute Barbatruc
Ici une proposition intéressante de Philippe Tulliez pour faire une déclaration conditionnelle :
eric
 

Discussions similaires

Statistiques des forums

Discussions
312 164
Messages
2 085 877
Membres
103 009
dernier inscrit
dede972