Bonjour,

J’ai un programme Lazarus qui convertit un classeur Excel en fichier CSV en faisant appel à l’interface OLE d’OpenOffice.
Mon problème est que si je passe les chemins en tant que constantes tout est OK alors que si le même chemin est passé en tant que variable j’ai un message « com.sun.star.lang.IllegalArgumentException : URL seems to be an unsupported one ».

J’utilise Lazarus 0.9.28.2 (mettre à jour sur une version plus ressente casserait mon projet qui est relativement complexe) et OpenOffice 3.0.0 build 9358

Voici la procédure :
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
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
uses windows, comobj, variants;
 
procedure TForm1.Button1Click(Sender: TObject);
var
   Probleme:Boolean;
   ServeurOO: Variant;
   CoreReflection:Variant;
   ValeurPropriete:Variant;
   BureauOO:Variant;
   ParametresChargement:Variant;
   ParametresExport:variant;
   Document:Variant;
   NomFic :String ;
begin
   Probleme:=False;
   try
      ServeurOO:=CreateOleObject('com.sun.star.ServiceManager');
   except
      on E:Exception do
         begin
         Application.MessageBox(pchar('Impossible de se connecter à OpenOffice. '+e.Message),'Erreur OLE',MB_OK);
         Probleme:=True;
         end;
   end;
 
   if Probleme=False then
      begin
      BureauOO:=ServeurOO.CreateInstance('com.sun.star.frame.Desktop');
      ParametresChargement:=VarArrayCreate([0,-1],varvariant);
 
      NomFic='file:///C:/test.xls' ;
      Document:=BureauOO.LoadComponentFromURL(NomFic,'_blank',0,ParametresChargement);//Provoque une erreur
      Document:=BureauOO.LoadComponentFromURL('file:///C:/test.xls','_blank',0,ParametresChargement);//fonctionne
      end;
end;
Je suppose que c’est un problème de conversion mais je n’ai pas pu trouver. Si une ame charitable pouvait m’aider…

P.S. : je n’ai pas trouvé de version téléchargeable de l’API hormis celle pour Visual Studio. Existe-il des CHM ou des versions zippées comme pour les FAQ de ce site ?