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

retour de fonctions VBA appelées depuis C#

6 réponses
Avatar
cyrille
Salut,

depuis du code C# j'appelle des fonctions VBA =E9critent dans Powerpoint.=


Par contre je n'ais pas trouv=E9 comment r=E9cup=E9rer dans le code C#
des valeurs calcul=E9es par ces fonctions VBA.

Quelle piste suivre ?

merci
cyrille

6 réponses

Avatar
Paul Bacelar
Vous ne pouvez obtenir que la valeur de retour de la fonction.

Si des valeurs doivent être récupérées, elles doivent être stockées dans des
propriétés qui seront accessibles en .NET


--
Paul Bacelar

"cyrille" wrote in message
news:
Salut,

depuis du code C# j'appelle des fonctions VBA écritent dans Powerpoint.

Par contre je n'ais pas trouvé comment récupérer dans le code C#
des valeurs calculées par ces fonctions VBA.

Quelle piste suivre ?

merci
cyrille
Avatar
cyrille
Merci Paul,

Paul Bacelar wrote:
Vous ne pouvez obtenir que la valeur de retour de la fonction.



et bien comment faire pour obtenir la valeur de retour d'une fonction ?
en fait pour l'instant mon seul moyen d'accès au VBA depuis C#
est de la forme :

PowerPoint.Application pApp;
pApp = (PowerPoint.Application) System.Runtime.InteropServices.Marsha l.GetActiveObject("PowerPoint.Application");
int toto = 123 ;
object[] o = {toto};
pApp.Run( PPTAddIn.name + "!LeModule.LaFonction", ref o );

D'après votre réponse, je me dis qu'il doit y avoir un autre moyen ?. ..

Cyrille
Avatar
Paul Bacelar
"pApp.Run" retourne un "Variant" COM qui se traduit en "Object" sous .NET.
Vous n'avez ensuite qu'à caster l'objet en un type voulu.

Object toto = pApp.Run( PPTAddIn.name + "!LeModule.LaFonction", ref o );
String res = toto as string;

--
Paul Bacelar


"cyrille" wrote in message
news:
Merci Paul,

Paul Bacelar wrote:
Vous ne pouvez obtenir que la valeur de retour de la fonction.



et bien comment faire pour obtenir la valeur de retour d'une fonction ?
en fait pour l'instant mon seul moyen d'accès au VBA depuis C#
est de la forme :

PowerPoint.Application pApp;
pApp = (PowerPoint.Application)
System.Runtime.InteropServices.Marshal.GetActiveObject("PowerPoint.Applicati
on");
int toto = 123 ;
object[] o = {toto};
pApp.Run( PPTAddIn.name + "!LeModule.LaFonction", ref o );

D'après votre réponse, je me dis qu'il doit y avoir un autre moyen ?...

Cyrille
Avatar
cyrille
Paul Bacelar wrote:
"pApp.Run" retourne un "Variant" COM qui se traduit en "Object" sous .N ET.
Vous n'avez ensuite qu'à caster l'objet en un type voulu.

Object toto = pApp.Run( PPTAddIn.name + "!LeModule.LaFonction", ref o );
String res = toto as string;




Merci Paul, c'est une bonne nouvelle.
Je vais essayer de suite.

Cyrille
Avatar
cyrille
cyrille wrote:
Paul Bacelar wrote:

"pApp.Run" retourne un "Variant" COM qui se traduit en "Object" sous
.NET.
Vous n'avez ensuite qu'à caster l'objet en un type voulu.





bon ça fonctionne très bien.

maintenant pour aller plus loin de façon plus autonome,
il me faudrait de la documentation sur
Microsoft.Office.Interop.PowerPoint.ApplicationClass.

dans la doc de VS.NET 2003 / MSDN,
il y a bien du blabla sur comment faire,
mais je ne trouve aucune référence genre liste méthodes,attributs,e vents par objet ...

où trouver ça ?
sur quel CD de "msdn universal" ?

cyrille
Avatar
Paul Bacelar
Tous ceci est lié au monde COM, donc il faut utiliser les outils COM.

L'outil "OLE/COM ObjectViewer" de VS.NET permet de lire la tlb (bibliothèque
de types) de l'exécutable de PowerPoint et donc de connaître l'ensemble des
types, méthodes, propriétés, interfaces du modèle objet de PowerPoint
--
Paul Bacelar

Demandeur d'emploi


"cyrille" wrote in message
news:
cyrille wrote:
Paul Bacelar wrote:

"pApp.Run" retourne un "Variant" COM qui se traduit en "Object" sous
.NET.
Vous n'avez ensuite qu'à caster l'objet en un type voulu.





bon ça fonctionne très bien.

maintenant pour aller plus loin de façon plus autonome,
il me faudrait de la documentation sur
Microsoft.Office.Interop.PowerPoint.ApplicationClass.

dans la doc de VS.NET 2003 / MSDN,
il y a bien du blabla sur comment faire,
mais je ne trouve aucune référence genre liste méthodes,attributs,events par
objet ...

où trouver ça ?
sur quel CD de "msdn universal" ?

cyrille