[Résolu][OXT] Autoriser l'exécution de script

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 !
DanielM
NOOuvel adepte
NOOuvel adepte
Messages : 23
Inscription : 24 oct. 2012 14:40

[Résolu][OXT] Autoriser l'exécution de script

Message par DanielM »


La modération vous a écrit: TO : [OXT] Dossier de modeles avec macros
"macros" est inutile dans la section consacrée aux macros. Veillez à ne plus employer de terme implicite dans un titre.

Bonjour

Sur tous nos postes de travail, une extension est déployée, la macro principale est exécutée à chaque ouverture de session (dans le loginscript)

Code : Tout sélectionner

start /wait "Lancement LibreOffice Macro1" "%Pgm_LO%program\soffice.exe" "macro:///xxx_Config_Utilisateur()"
Dans cette macro le chemin des modèles est configuré

Code : Tout sélectionner

Lecture
jConfig = CreateUnoService("com.sun.star.util.PathSettings")
puis utilisation avec:
jConfig.getPropertyValue("Template_user"))
Pour info voici le code complet (épuré des nos informations).
Comme nous avons changé d'emplacement il ajoute le nouveau dossier ou remplace l'ancien.
Remarque: le paramètre ("Menu") permet l'affichage des messages en interactif.

Code : Tout sélectionner

Sub xxx_ConfigModele_Exec( Optional Param1 As String )
Rem **********************************************************************
Rem Pour LibreOffice
Rem 
Rem **********************************************************************
Rem Configuration des dossiers
Rem dans les options en LibreOffice - Chemins - Modèles
Rem     Ajout \\ged\xxx
Rem 	Suppression \\xxx
Rem 
Rem **********************************************************************
Rem 

	Dim NotreModele As String
	Dim AncienModele As String
	Dim jConfig As Object
	Dim Index, IndexMin, IndexMax, IndexSuppr As Long
	Dim AjoutjConfigTemplate_user As Boolean
	Dim SupprjConfigTemplate_user As Boolean
	Dim jConfigTemplate_user() As String

	Dim MessageTitre As String
	Dim MessageInfo As String
	Dim Bavard As Boolean
	Dim Debug As Boolean
	If IsMissing( Param1 ) Then
		Bavard = False
		Debug = False
	Else
		Param1 = LCase(Param1)
		Select Case Param1
			Case "menu"
				Bavard = True
				Debug = False
			Case "debug"
				Bavard = True
				Debug = True
			Case Else
				Bavard = False
				Debug = False
		End Select
	EndIf

	Rem Titre pour Message utilisateur
	MessageTitre = "Information xxx - Dsi"

	Rem Notre configuration
	NotreModele = "file://ged/xxx/LibreOffice/Modeles"
	Rem Notre ancienne configuration
	AncienModele = "file://xxx/LibreOffice/Modeles"

	Rem Lecture de la configuration des chemins
    jConfig = CreateUnoService("com.sun.star.util.PathSettings")
	Rem IndexMin est à 0 normalement
	IndexMin = LBound(jConfig.getPropertyValue("Template_user"))
	IndexMax = UBound(jConfig.getPropertyValue("Template_user"))

	AjoutjConfigTemplate_user = False
	If IndexMin > IndexMax Then
		Rem Le tableau est vide
		Rem Mise en place de notre dossier
		jConfigTemplate_user = Array(NotreModele)
		AjoutjConfigTemplate_user = True
	Else
		Rem Lecture de la configuration Template_user
		jConfigTemplate_user() = jConfig.getPropertyValue("Template_user")
		Rem On parcours le tableau pour vérifier les chemins configurés
		AjoutjConfigTemplate_user = True
		For Index = IndexMin To IndexMax
			If LCase(jConfigTemplate_user(Index)) = LCase(NotreModele) Then
				AjoutjConfigTemplate_user = False
			EndIf
			If LCase(jConfigTemplate_user(Index)) = LCase(AncienModele) Then
				SupprjConfigTemplate_user = True
				IndexSuppr = Index
			EndIf
		Next

		Rem Cette partie ne fait pas de suppression
		Rem     juste ajout ou remplacement
		If AjoutjConfigTemplate_user Then
			If SupprjConfigTemplate_user Then
				Rem Remplacement ancien dossier par nouveau
				jConfigTemplate_user(IndexSuppr) = NotreModele
			Else
				Rem Ajout de notre dossier
				Redim Preserve jConfigTemplate_user(IndexMax+1-IndexMin)
				jConfigTemplate_user(IndexMax+1) = NotreModele
			EndIf
		EndIf

	EndIf

	If AjoutjConfigTemplate_user Then
		Rem Validation de la configuration modifiée
		jConfig.setPropertyValue("Template_user",jConfigTemplate_user)
			If Bavard Then
				MessageInfo = "Le chemin " & NotreModele & chr(13) & chr(13)
				MessageInfo = MessageInfo & "est ajouté à votre configuration."
				MsgBox(MessageInfo,64 ,MessageTitre)
			End If
	Else
			If Bavard Then
				MessageInfo = "Le chemin " & NotreModele & chr(13) & chr(13)
				MessageInfo = MessageInfo & "est déjà présent dans votre configuration."
				MsgBox(MessageInfo,64 ,MessageTitre)
			End If
	EndIf

	If SupprjConfigTemplate_user Then
		Rem Validation de la configuration modifiée
		jConfig.setPropertyValue("Template_user",jConfigTemplate_user)
			If Bavard Then
				MessageInfo = "Le chemin " & AncienModele & chr(13) & chr(13)
				MessageInfo = MessageInfo & "est enlevé de votre configuration."
				MsgBox(MessageInfo,64 ,MessageTitre)
			End If
	Else
			If Bavard Then
				MessageInfo = "Le chemin " & AncienModele & chr(13) & chr(13)
				MessageInfo = MessageInfo & "est absent de votre configuration."
				MsgBox(MessageInfo,64 ,MessageTitre)
			End If
	EndIf

End Sub
Ma recherche:
Trouver comment autoriser mon dossier "NotreModele" a exécuter des macros.
 Ajout : Par menu:
Outils, Options puis LibreOffice, Sécurité. Bouton Sécurité des macros, onglet Sources de confiance et enfin Emplacements de fichier de confiance 
Je cherche un appel du genre CreateUnoService("com.sun.star.xxx") avec la valeur correspondante.

Merci de l'information

PS: Si quelqu'un trouve la réponse, j'aimerai aussi savoir par quel moyen (bibliothèque, pdf, ...).

Daniel
LibreOffice 5.3.6 sous Windows sept Pro
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 09:26

Re: [OXT] Dossier de modeles avec macros

Message par Hubert Lambert »

Bonjour,
DanielM a écrit :La recherche:
Trouver comment autoriser mon dossier "NotreModele" a exécuter des macros.
Ça se passe au niveau du registre de configuration : il faut ajouter le chemin du répertoire NotreModele à la propriété "SecureURL" de la clé "org.openoffice.Office.Common/Security/Scripting" (équivalent de Outils -> Options -> Sécurité -> Sécurité des macros -> Sources de confiance).
En utilisant le fonction "getRegistryKeyContent" disponible dans la bibliothèque basic par défaut, ça donne quelque chose comme ceci :

Code : Tout sélectionner

    regkey = getRegistryKeyContent("org.openoffice.Office.Common/Security/Scripting", True)
    secureurl = regkey.SecureURL
    ' ajouter ici à "secureurl" la valeur de "NotreModele", éventuellement retirer "AncienModele"
    ' [...]
    regkey.SecureURL = secureurl
    regkey.commitChanges()
Cordialement.
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
DanielM
NOOuvel adepte
NOOuvel adepte
Messages : 23
Inscription : 24 oct. 2012 14:40

Re: [OXT] Dossier de modeles avec macros

Message par DanielM »

Hubert Lambert a écrit :

Code : Tout sélectionner

regkey = getRegistryKeyContent("org.openoffice.Office.Common/Security/Scripting", True)
Bonjour,
Merci de la réponse, mais j'ai un message LibreOffice 5.3.6.1 => Erreur d'éxécution BASIC. Sous-procédure ou procédure fonction non définie.

Daniel
LibreOffice 5.3.6 sous Windows sept Pro
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 09:26

Re: [OXT] Dossier de modeles avec macros

Message par Hubert Lambert »

La fonction se trouve dans le module "Misc" de la bibliothèque "Tools" préinstallée (c'est-à-dire dans l'emplacement "Macro LibreOffice").
Il faut donc charger cette bibliothèque au préalable :

Code : Tout sélectionner

libs = GlobalScope.BasicLibraries
libs.loadLibrary("Tools")
ou plus simple peut-êre : l'incorporer directement dans ton code...
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
DanielM
NOOuvel adepte
NOOuvel adepte
Messages : 23
Inscription : 24 oct. 2012 14:40

[Résolu] [OXT] Autoriser l'exécution

Message par DanielM »

Bonjour,

Merci, cela fonctionne parfaitement!
Il me reste à finaliser et à déployer la nouvelle extension.
Ticket clôturé.
Hubert Lambert a écrit :La fonction se trouve dans le module "Misc" de la bibliothèque "Tools" préinstallée...
Il faut donc charger cette bibliothèque au préalable...
ou plus simple peut-êre : l'incorporer directement dans ton code...
Oui, je l'ai ajouté dans le module "xxx_ProcedureFonctions" que j'avais oublié depuis mon ancienne session de programmation en mars 2015!

La modération vous a écrit: TO : [OXT] Dossier de modeles avec macros
"macros" est inutile dans la section consacrée aux macros. Veillez à ne plus employer de terme implicite dans un titre.

Ma remarque: Modifier le titre en "Autoriser l'exécution" ne veut plus rien dire! Je pense que cette règle implicite est à un seul niveau or mon titre en comporte deux: c'est une macro (niveau un, implicite) qui autorise l'exécution des macros (niveau deux, explicite et donc nécessaire). Le titre doit bien être "Autoriser l'exécution des macros".

Bonne Journée,
Daniel
LibreOffice 5.3.6 sous Windows sept Pro
Verrouillé