Bonjour,
Je travaille pour une soci�t� qui � r�alis� un logiciel qui contient, entre autres, une fonction qui permet d'�crire dans un fichier Excel, pour cela ils ont utilis� le composant TExcelApplication. Cette fonction d'export de donn�e vers Excel est �crite dans un OCX.

La soci�t� souhaite que je remplace Excel par Open Office, ce travail �tant le sujet de mon stage.

Ces 2 derni�res semaines j'ai donc appris � piloter Open Office par OLE, tout fonctionne parfaitement lorsque le pilotage d'Open office se fait dans un EXE, mais rien ne marche lorsqu'il se fait dans un OCX.

Pour d�but� mes essais sous l'OCX, j'essaie simplement de lancer calc avec ce code:
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Variant vOOoOpenOffice, vOOoDocument, vOOoDesktop, vOOoLoadParams;
Boolean vOOoDocumentExist;
 
try
{
  vOOoOpenOffice = CreateOleObject("com.sun.star.ServiceManager");
}
catch (...)
{
 // si on passe ici c'est qu'il y a une erreur qu'il faudra traiter
}
if (VarType(vOOoOpenOffice) == varDispatch)
vOOoDesktop = vOOoOpenOffice.OleFunction("createInstance", "com.sun.star.frame.Desktop");
int Bounds[2] = {0,-1};
vOOoLoadParams = VarArrayCreate(Bounds, 1, varVariant);
// ici on ouvre un nouveau document vierge calc
vOOoDocument = vOOoDesktop.OleFunction("LoadComponentFromURL", "private:factory/scalc", "_blank", 0, vOOoLoadParams);
vOOoDocumentExist = !(VarIsEmpty(vOOoOpenOffice) || VarIsNull(vOOoOpenOffice)); // false
L'OCX execute la premi�re instruction, puis il plante � la deuxi�me et m'affiche un message d'erreur de type violation d'acc�s...

Lorsqu'il execute la premi�re instruction, l'ic�ne Open office apparait tout de m�me dans la barre de notification, mais je pense que la cr�ation le l'objet OLE ne se fait pas correctement.

Ma question est donc : est-il possible de cr�er des objet OLE dans un OCX?
Et si oui comment?
C'est peut �tre la raison pour laquelle les concepteurs de cet OCX n'ont pas utilis� le pilotage OLE pour Excel.