FAQ LibreOffice et Apache OpenOfficeConsultez toutes les FAQ
Nombre d'auteurs : 10, nombre de questions : 359, dernière mise à jour : 15 juillet 2017 Ajouter une question
Bienvenue sur la FAQ, elle a été réalisée pour répondre aux questions concernant les suites bureautiques Apache OpenOffice (AOO) et LibreOffice (LibO).
Si vous souhaitez participer pour l'améliorer, pour proposer vos contributions ou si vous constatez des erreurs dans cette page, n'hésitez-pas !!! Participez.
- Comment accéder à l'éditeur de macros (aussi appelé EDI) ?
- Quelle est la différence entre ThisComponent et CurrentComponent ?
- Comment modifier la barre de titre de l'application ?
- Comment visualiser les propriétés, méthodes et interfaces disponibles sur une variable objet ?
- Où trouver une description complète des APIs OpenOffice/LibreOffice ?
- Comment lire ou modifier les propriétés des fichiers OpenOffice/LibreOffice ?
- Comment ajouter, lire ou modifier les propriétés champ utilisateur ?
- Comment récupérer des informations sur l'imprimante active ?
- Comment figer l'écran pendant le déroulement d'une macro ?
- Comment récupérer des informations sur les numéros de compilation, de version, ainsi qu'une liste des développeurs AOO/LibO ?
- Comment fermer le document par macro ?
- Comment obtenir la version de LibreOffice/OpenOffice utilisée ?
Le raccourci clavier Alt+F11 permet d'afficher la boite de dialogue pour gérer les macros.
(C'est l'équivalent de Menu Outils / Macros / Gérer les macros / OpenOffice.ord Basic)
Ensuite, sélectionnez votre fichier AOO/LibO dans la liste de gauche.
Si le fichier ne contient pas encore de module, cliquez sur le bouton « Nouveau ».
Si le fichier contient déjà des macros, sélectionnez le module (généralement nommé Module1 par défaut) et cliquez sur le bouton « Editer » pour y accéder.
Quand vous êtes dans l'éditeur de macros, vous pouvez basculer vers les modules des autres fichiers ouverts, en utilisant la liste déroulante en haut à gauche de l'écran.
Pour ajouter un nouveau module, lorsque vous êtes dans l'éditeur, faites un clic droit dans la barre d'onglet, en bas de la fenêtre : Insérer / Module Basic.
ThisComponent représente le fichier contenant la macro. C'est l'équivalent de ThisWorkbook dans Excel.
CurrentComponent représente le fichier actif. C'est l'équivalent d'ActiveWorkbook dans Excel. CurrentComponent ne fonctionne par lorsque la procédure est déclenchée depuis l'éditeur de macros.
Vous pouvez utiliser cette macro afin de vérifier par vous-même :
Créez deux fichiers OOo et sauvegardez les sur le poste (getURL renvoie une chaîne vide si le fichier n'est pas enregistré).
Placez la macro dans un des deux fichiers.
Activez le fichier qui ne contient pas la macro.
Lancez la procédure.
Code vb : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 | Sub Test_ThisComponent_getCurrentComponent 'Récupère le chemin et le nom du fichier contenant cette macro 'Nota: 'getURL renvoie une chaîne vide si le fichier n'est pas enregistré MsgBox ConvertFromURL( ThisComponent.getURL ) 'Récupère le chemin et le nom du fichier Actif. 'Nota: 'Renvoie un chaîne vide si la macro est lancée depuis l'éditeur de macros MsgBox ConvertFromURL( StarDesktop.getCurrentComponent.getURL ) End Sub |
Code vb : | Sélectionner tout |
ThisComponent.CurrentController.Frame.Title = "Nouveau titre"
Installez et utilisez l'indispensable outil créé par Bernard Marcelly: XRAY
La page d'accueil de l'API Project.
L'index global.
Vous pouvez aussi installer le SDK (Software Development Kit) sur votre poste.
Il s'agit d'une documentation très détaillée sur les concepts et les APIs d'OpenOffice.org.
Software Development Kit (SDK).
Les propriétés des fichiers AOO/LibO sont accessibles par le menu Fichier/Propriétés.
Il est possible de lire ces propriétés par macros :
Code vb : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | Sub LireProprietesFichier Dim oInfo As Object oInfo = ThisComponent.DocumentInfo MsgBox "Titre: " & oInfo.title & Chr(10) & _ "Auteur: " & oInfo.Author & Chr(10) & _ "Mots clés: " & oInfo.Keywords & Chr(10) & _ "Description: " & oInfo.Description & Chr(10) & _ "Sujet: " & oInfo.Subject & Chr(10) & _ "Type: " & oInfo.MIMEType MsgBox "Date création: " & oInfo.CreationDate.Day & "/" & oInfo.CreationDate.Month & _ "/" & oInfo.CreationDate.Year & Chr(10) & _ "Modifié par: " & oInfo.ModifiedBy & Chr(10) & _ "Date modification: " & oInfo.ModifyDate.Day & "/" & oInfo.ModifyDate.Month & _ "/" & oInfo.ModifyDate.Year & " " & Format(oInfo.ModifyDate.Hours, "00") & ":" & _ Format(oInfo.ModifyDate.Minutes, "00") & ":" & Format(oInfo.ModifyDate.Seconds, "00") 'Autre possibilité pour lire les propriétés MsgBox oInfo.getPropertyValue("Author") End Sub |
Il est aussi possible de modifier les propriétés :
Cet exemple modifie la propriété « Auteur ».
Code vb : | Sélectionner tout |
1 2 3 4 5 6 7 | Dim oInfo As Object oInfo = ThisComponent.DocumentInfo oInfo.Author = "mimi" 'Une autre possibilité de syntaxe pour modifier une propriété oInfo.setPropertyValue("ModifiedBy" , "fifi") |
Le champ utilisateur permet d'assigner des informations personnalisées au document.
Menu Fichier / Propriétés / Onglet « utilisateur »
Quatre champs sont disponibles.
Code vb : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Sub AjoutChampUtilisateur Dim oInfo As Object oInfo = ThisComponent.DocumentInfo 'Ajout d'une information personnelle dans la 1er champ: oInfo.setUserFieldName( 0 , "Affaire" ) oInfo.setUserFieldValue( 0 , "FAQ OOo" ) 'Lecture du premier champ utilisateur MsgBox "Nom champ utilisateur N°1: " & oInfo.getUserFieldName(0) & Chr(10) & _ "Contenu champ utilisateur N°1: " & oInfo.getUserFieldValue(0) End Sub |
Pour effacer un champ utilisateur, utilisez :
Code vb : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 | Sub EffacerChampUtilisateur Dim oInfo As Object oInfo = ThisComponent.DocumentInfo 'Suppression info dans la 1er champ oInfo.setUserFieldName( 0 , "" ) oInfo.setUserFieldValue( 0 , "" ) End Sub |
Code vb : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | Sub InformationsImprimanteActive MsgBox ThisComponent.Printer(0).Value & Chr(10) & _ "Est occupée: " & ThisComponent.Printer(4).Value ' 0 = Name ' 1 = PaperOrientation ( 0=Portrait , 1=Paysage) ' 2 = PaperFormat ( 0=A3 , 1=A4 , 2=A5 , 3=B4 , B5=4 ) ' 3 = PaperSize ' 4 = IsBusy ' 5 = CanSetPaperOrientation ' 6 = CanSetPaperFormat ' 7 = CanSetPaperSize End Sub |
Les macros qui sélectionnent des feuilles successives ou des cellules, qui activent/désactivent des objets divers, peuvent provoquer un effet de scintillement à l'écran. Une solution (hormis celle d'éviter les sélections dans les macros) consiste à figer l'écran pendant le déroulement de la macro. C'est l'équivalent de ScreenUpdating = False en VBA.
Pour activer cette option, placez la ligne suivante en début de procédure :
Code vb : | Sélectionner tout |
ThisComponent.LockControllers
Pour désactiver cette option en fin de procédure :
Code vb : | Sélectionner tout |
ThisComponent.UnlockControllers
Sélectionnez le menu Aide - À propos de LibreOffice ou OpenOffice.
Cette commande ouvre une boîte de dialogue contenant des informations sur le document.
Ensuite, pour obtenir plus d'informations, maintenez la touche Ctrl enfoncée et appuyez successivement sur les lettres S, D et T. Vous trouverez au début des informations sur les numéros de compilation et de version, ainsi qu'une liste des développeurs OOo.
Si vous ne souhaitez pas lire les informations jusqu'à la fin, appuyez sur la touche Échap.
Cette macro de Laurent Godard permet aussi de récupérer la version de LibO/AOO utilisée :
Code vb : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | Sub Main MsgBox "Version OOo: " & RecupereVersionOOO End Sub Function RecupereVersionOOO() As String '----------------------- 'Auteur: Laurent Godard 'récupère version de OOo '----------------------- Dim aSettings, aConfigProvider Dim aParams2(0) As new com.sun.star.beans.PropertyValue aConfigProvider = createUnoService( "com.sun.star.configuration.ConfigurationProvider" ) aParams2(0).Name = "nodepath" aParams2(0).Value = "/org.openoffice.Setup/Product" aSettings = aConfigProvider.createInstanceWithArguments( "com.sun.star.configuration.ConfigurationAccess", aParams2() ) RecupereVersionOOO = aSettings.getbyname("ooSetupVersion") End Function |
La fonction GetSolarVersion renvoie le numéro interne de la version active de LibO/AOO.
Code vb : | Sélectionner tout |
1 2 3 | Sub Main MsgBox GetSolarVersion End Sub |
Trois manières différentes :
Code : | Sélectionner tout |
1 2 3 | stardesktop.terminate() 'ferme le doc courant DisposeDocument(ThisComponent) 'ferme le doc passé en paramètre ThisComponent.close(True) 'méthode de l'objet doc |
La commande est la suivante GetSolarVersion().
Cela peut être utile si vous avez une macro qui ne fonctionne qu'avec une version minimum de la suite :
Code obasic : | Sélectionner tout |
1 2 3 4 5 6 7 | If CInt( GetSolarVersion() ) < 410 Then 'Teste la version de la suite Beep 'Son d'erreur MsgBox "Votre version de LibreOffice/OpenOffice ("""&GetSolarVersion()&""") est trop ancienne pour utiliser cette macro, il vous faut un minimum la ""410""." Beep 'Son d'erreur MsgBox "Macro désactivé" Stop 'Désactive l'éxécution de la macro End If |
Proposer une nouvelle réponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour çaLes sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.