[Résolu][Base]Test d'erreur lors d'appel de fichier externe

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
ooSikas
Membre OOrganisé
Membre OOrganisé
Messages : 72
Inscription : 22 juil. 2017 08:33

[Résolu][Base]Test d'erreur lors d'appel de fichier externe

Message par ooSikas »


La modération vous a écrit: Titre modifié pour plus de clarté.

Bonjour

Mon programme a été rédigé sous Calc, mais le problème que je rencontre s'applique à n'importe quel logiciel de la suite, j'ai donc mis Base en objet. N’hésitez pas à me corriger si je me trompe.

A l'intérieur d'une macro, je demande l'ouverture d'un fichier .ott se situant dans le même dossier que le fichier de travail.

Code : Tout sélectionner

  
Dim oWriter As Object
Dim sAdresseDoc As String
Dim propFich() As New com.sun.star.beans.PropertyValue
sAdresseDoc = ConvertToURL(getDirectory(oCalc.URL) & "MODELE_DEVIS.ott")
oWriter = StarDesktop.loadComponentFromURL(sAdresseDoc, "_blank", 0, propFich() )
Insipiré du code de wiki OppenOffice :

Code : Tout sélectionner

Dim Doc As Object
Dim Url As String
Dim Dummy() 'It is an (empty) array of PropertyValues
Url = "file:///C:/test.odt" 
Doc = StarDesktop.loadComponentFromURL(Url, "_blank", 0, Dummy)
Tout fonctionne bien, sauf quand l'utilisateur oublie de mettre le fichier .ott dans le même dossier.

J'aimerai ajouter une vérification de l'erreur type "DetectionFailed' avant d'utiliser le

Code : Tout sélectionner

StarDesktop.loadComponentFromURL.

Ainsi je pourrait faire apparaître une boite de dialogue expliquant que le fichier .ott est introuvable et quitter la macro avant qu'elle se mette en erreur.
Je ne sais pas comment m'y prendre pour faire le test de l'erreur. Avez vous des idées?

Merci d'avance
Dernière modification par ooSikas le 11 nov. 2019 11:47, modifié 2 fois.
LibreOffice Version: 6.4.4.2 sous Windows 10
Avatar de l’utilisateur
luky-luke
InconditiOOnnel
InconditiOOnnel
Messages : 936
Inscription : 27 nov. 2010 00:17
Localisation : gâtine deux-sèvrienne

Re: [Base]Tester les erreur lors de l'appel d'un fichier ext

Message par luky-luke »

Bonjour

Code : Tout sélectionner

sAdresseDoc = ConvertToURL(getDirectory(oCalc.URL) & "MODELE_DEVIS.ott")
If not FileExists(sAdresseDoc) Then
MsgBox("Le document n'existe pas")
Cordialement
Luke
AOO 4.1.3 et LibO 5.3.7.2 Ubuntu 16.04 LTS et Debian 9
Xray ne tient pas lieu de tout, mais une pratique sans Xray ne vaut pas grand chose
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25175
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Base]Tester les erreur lors de l'appel d'un fichier ext

Message par Dude »

Salut,
ooSikas a écrit :sauf quand l'utilisateur oublie de mettre le fichier .ott dans le même dossier.
Et pourquoi ta macro ne fait pas cette opération ?
Regarde du côté de FileCopy dans l'aide F1 ou le Wiki
ooSikas
Membre OOrganisé
Membre OOrganisé
Messages : 72
Inscription : 22 juil. 2017 08:33

Re: [Base]Test d'erreur lors d'appel de fichier externe

Message par ooSikas »

Bonjour

Luky-luke : merci c'est exactement ce qu'il me fallait, la fonction FileExists :D :D Je passe le sujet en résolu

Dude : Il s'agit d'un fichier Calc de création de prix. Je viens mettre en forme un devis (en ouvrant un modèle Writer) en y intégrant automatiquement les prix calculés dans Calc.
Pour trouver l'url du fichier Writer, je prend l'adresse du fichier Calc et je remplace le nom du fichier et l'extension. Par conséquent si le modèle Writer n'est pas rangé au bon endroit, la macro ne trouve pas le fichier et plante.


Merci pour vos réponses et votre aide !
LibreOffice Version: 6.4.4.2 sous Windows 10