Enregistrer en format odt sans les macros incluses dans le fichier [Résolu]

Signaler
Messages postés
3
Date d'inscription
lundi 2 mars 2020
Statut
Membre
Dernière intervention
5 mars 2020
-
Messages postés
3
Date d'inscription
lundi 2 mars 2020
Statut
Membre
Dernière intervention
5 mars 2020
-
Bonjour,

J'ai créé un fichier traitement de texte .odt avec des macros dedans (dans un module dans le fichier), car le fichier doit etre diffusé avec ses macros.
Ces macros permettent de modifier initialement le fichier (elles modifient des champs utilisateur dans le texte, ça marche très bien), mais ne sont plus utiles pour la suite. J'aimerais donc que le code propose de sauvegarder une version du document sans les macros. Mais je souhaite conserver le format odt (en .docx les champs utilisateurs ne passent pas)
J'ai retourné la fonction storetourl dans tous les sens, je nai pas trouvé.
Les utilisateurs n'ont pas le niveau pour aller chercher dans les menus le module et le supprimer, je cherche a faire quelque chose d'automatisé.

Merci d'avance pour vos réponses !



Configuration: Android / Chrome 79.0.3945.93

3 réponses

Messages postés
2101
Date d'inscription
vendredi 25 juillet 2014
Statut
Membre
Dernière intervention
25 septembre 2020
826
bonjour
Voir en enregistrant ou copier/coller la macro dans "mes macros" et la supprimer du document de départ
Messages postés
3
Date d'inscription
lundi 2 mars 2020
Statut
Membre
Dernière intervention
5 mars 2020

L'objectif est d'envoyer initialement le fichier avec sa macro, car ce nest pas destiné a tourner sur ma machine.
Messages postés
3
Date d'inscription
lundi 2 mars 2020
Statut
Membre
Dernière intervention
5 mars 2020

Pour info, j'ai trouvé : il faut désassocier l'évènement "OnNEw" et supprimer la librairie.
Bon, j'ai pas tout compris, mais ça marche très bien !!


Sub Sauvegarder_sans_macro
oDoc = ThisComponent
DesassocierEvenement(oDoc, "OnNew")
SupprimerMacro(oDoc, "Standard")
Thiscomponent.store
End Sub

Sub DesassocierEvenement(oDoc As Object, sNomEvt As String)
oEvts = oDoc.getEvents()
If oEvts.hasByName(sNomEvt) Then
Dim aArgs(0) As New com.sun.star.beans.PropertyValue
oEvts.replaceByName(sNomEvt, aArgs)
End If
End Sub

Sub SupprimerMacro(oDoc As Object, sNomLib As String)
oLibs = oDoc.BasicLibraries
If oLibs.hasByName(sNomLib) Then
oLibs.removeLibrary(sNomLib)
End If
End Sub