La modération vous a écrit: règles de cette section
Le balisage (à taper au clavier) doit être correctement orthographié (première lettre en majuscule puis le reste en minuscules).
+ rajout de [Basic] supprimé par [Résolu]
Bonjour,
sujet inspiré du sujet imparfaitement résolu ou au titre inadéquat ou ambiguë: [Résolu][Bash]Appel de script dans "Mes Macros"
Ce code correspond bien à un titre du genre "Modification d'un fichier texte (du système de fichier) depuis une macro"
Code : Tout sélectionner
Sub bavard(c As String, n As Integer)
Dim f As Integer
f = FreeFile
open "/home/trucmuche/Documents/essaiMacro.txt" for Output As f
Write #f, Time & " bavard a dit : " & n & " " & c
close #f
msgbox "bavard a terminé"
end sub
Ce code correspond bien à "Lancer une macro depuis un script bash" (appelons-le essai-macro-bavard.sh) :
Code : Tout sélectionner
#!/bin/bash
export DISPLAY=":0.0" # pas utile chez moi, d'ailleurs DISPLAY="0:"
cmdMacro="macro:///Standard.Module1.bavard(un,15)"
/opt/libreoffice5.3/program/soffice --headless "$cmdMacro"
exit 0
Mais Quid de l'appel de essai-macro-bavard.sh depuis une macro (appelons-la call_my_script) ?
Je cherche du côté de session.RunApplication mais je ne parviens pas à faire fonctionner cet appel de méthode sur l'objet session.
Code : Tout sélectionner
Sub call_my_script
Dim str As String
GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
Dim session As Variant
session = CreateScriptService("Session")
str = "contenu texte d'une plage de données"
' essai-macro-bavard.sh n'étant pas une application nommée du système mais un simple fichier exécutable, ...
session.RunApplication("/bin/bash /home/denis/Documents/Budget/essai-macro-bavard.sh", #str) ' GNU/Linux
' ci-dessous aurait encore moins de sens, bash n'étant pas non plus une application
session.RunApplication("/bin/bash", "/home/denis/Documents/Budget/essai-macro-bavard.sh" & #str) ' GNU/Linux
' intéressant ci-dessous, il appelle l'application default de mon système pour traiter ce genre de fichier :
session.RunApplication("/home/denis/Documents/Budget/essai-macro-bavard.sh", #str)
' ci-dessous ne marche pas, même si je déplace les arguments de konsole dans deuxième paramètre : "-e ./essai-macro-bavard.sh" & #str
session.RunApplication("konsole -e ./essai-macro-bavard.sh", #str)
End Sub
Code : Tout sélectionner
!#/bin/bah
echo "ce qu'on veut" >> essaiMacro.txt
le troisième appel a RunApplication est encourageant, il m'ouvre l'appli par défaut pour traiter les fichiers texte (sans configuration système pour traiter les .sh). Qu'est ce que je ne comprends pas et comment faire que je puisse réellement appeler mon script .sh (bash) depuis la macro call_my_script ?
NB: ce que j'envisage de faire c'est
- appeler la macro "bavard" pour écrire des lignes dans un fichier texte "essaiMacro.txt"
- lancer macro "call_my_script" depuis macro "bavard"
- bash interprète ce script et traite les lignes dans "essaiMacro.txt
- call_my_script finit en appelant une macro ou une fonction qui copie le contenu de "essaiMacro.txt dans une plage de donnée de la feuille