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: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...
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
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.
Partager