IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenOffice & LibreOffice Discussion :

Intégrer les macros UNO openOffice Delphi


Sujet :

OpenOffice & LibreOffice

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 157
    Points : 67
    Points
    67
    Par défaut Intégrer les macros UNO openOffice Delphi
    Bonjour,

    Je développe un programme sous Delphi permettant compléter un fichier odt (OpenOffice writer). Mais sur certaine instruction j'ai des exceptions concernant les macros UNO sont levés. Le message d'erreur est :

    " Le projet a déclenché la classe d'exception EOleException avec le message [automaton bridge] Unexpected exception in UnoConversionUtilities<T>::VariantToAny ! "


    Je vous donne un exemple de ces instructions. Par exemple l'instruction qui permet de retourner la. position du curseur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    FDesktop := FOffice.createInstance('com.sun.star.frame.Desktop');
    oDoc:=FDesktop.LoadComponentFromURL(FileName,'_default',0,FilterParams);
     
    oText = oDoc.getText();
    oCursor = oText.createTextCursor();
    oCursor.goToStart(FALSE);
    Pouvez vous m'aider à résoudre ce problème

    Merci

  2. #2
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Bonjour,

    Ce code permet d'insérer du texte à la position du curseur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Zoom61()
        Dim monDocument As Object, monTexte As Object, monCurseur As Object, monTexteCurseur As Object
     
        monDocument = ThisComponent
        monTexte = monDocument.Text
        monCurseur  =monDocument.CurrentController.getViewCursor()
        monTexteCurseur = monTexte.createTextCursorByRange(monCurseur, getStart())
        monTexte.insertString(monTexteCurseur, " Essai ", False)
    End Sub
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  3. #3
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 954
    Points : 9 284
    Points
    9 284
    Par défaut
    hello,

    nassim1987 a écrit :
    Mais sur certaine instruction j'ai des exceptions concernant les macros UNO sont levés
    Quelles instructions ? ta variable Filename est de quel type ( en pascal) ? et les autres variables ?

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 157
    Points : 67
    Points
    67
    Par défaut
    Pour les instructions qui lève des exceptions c'est par exemple l'instruction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     oText = oDoc.getText();
    FileName c'est l'url qui permet d'accéder à mon fichier odt, elle est de type Variant n Delphi .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FileName := 'file:///' + GetCurrentDir + '/test_file.odt';

  5. #5
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 954
    Points : 9 284
    Points
    9 284
    Par défaut
    hello,

    avec le code suivant en lazarus ( free pascal) :
    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
    var
      Form1: TForm1;
     
      Server     : Variant;
      Desktop    : Variant;
      LoadParams : Variant;
      Document   : Variant;
      TextCursor : Variant;
      oText : Variant;
      FileName : Variant;
     
    implementation
     
    {$R *.lfm}
     
    { TForm1 }
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
       try
        Server := CreateOleObject(ServerName);
      except
        ShowMessage('Unable to start OO.');
        Exit;
      end;
       Desktop := Server.CreateInstance('com.sun.star.frame.Desktop');
       LoadParams := VarArrayCreate([0, -1], varVariant);
       FileName :=  'file:///F:/temp/mondoc.odt';
       { Open existing} //you must use forward slashes, not backward!
      Document := Desktop.LoadComponentFromURL(FileName, '_blank', 0, LoadParams);
      oText := Document.getText();
      TextCursor := oText.CreateTextCursor;
      TextCursor.gotoStart(False);
      OText.insertString(TextCursor, ' Essai ', False);
    end;
    je n'ai pas d'exception.

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

Discussions similaires

  1. Réponses: 0
    Dernier message: 09/08/2015, 11h40
  2. Ada et LibreOffice / OpenOffice (les macros)
    Par dilgar dans le forum Ada
    Réponses: 0
    Dernier message: 11/07/2012, 22h06
  3. retrouver les compsants FASTNET sous Delphi 7
    Par fandor7 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 11/06/2003, 18h11
  4. Réponses: 4
    Dernier message: 16/02/2003, 12h16
  5. [VBA-E] ouvrir un fichier .xls sans executer les macro
    Par lae_t2 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/01/2003, 17h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo