Hallo Hans-Werner, Am Mon, 12 Nov 2018, um 11:17:52 [GMT +0000] (ist 12:17 wo ich lebe) schrieb OoOHWHOoO:
> mit PERL könnte man das so machen: > > Mit einem kleinen PERL-Programm [2] die zu ändernden Dateien systemweit > einsammeln und dann über eine Schleife für jede dieser Dateien das Makro > [1] unsichtbar ( = LO Oberfläche wird nicht gestartet ) ausführen. > > Ich habe es mal mit Deiner Datei getestet. Da funktionierte der > "unsichtbare" Makro-Aufruf und die Datei wurde wie gewünscht > modifiziert. > > Die Schleife in dem PERL-Programm habe ich nur "angedeutet". Ich kenn ja selbst Perl seit Jahrzehnten zu Genüge, aber Danke. > Aber bitte erst mal in einem definierten Umfeld testen und überprüfen, > ob alles so funktioniert, wie Du es Dir vorstellst. Klar, ich bin da vorsichtig. Ich will ja nicht mein Büro lahmlegen. ;) Danke für die weitere Anregung. Insebsondere mit dem Makroaufruf über die Kommandozeile :) > [1] MAKRO ( macro:///Standard.AutoAus.AutoAus - Das Makro "AutoAus" > stehe im Modul "AutoAus" in der Bibliothek "Standard" ) > > Option Explicit > > Sub AutoAus (D as String) ' Datei > > ' "AutoAus" nach einer Idee von Gerhard Weydt ergänzt um: > ' > ' + Übergabe Datei(name) an Makro. > ' + Datei unsichtbar öffnen. > ' + Datei Speiuchern und schließen. > > Dim oD as Object ' [object] Document > Dim oPStyles as Object ' [object] PStyles > Dim oStyle as Object ' [object] Style > Dim aD() as Variant ' [array] Dummy > Dim iStyle as long ' [index] Style > > Dim aPV(0) as New com.sun.star.beans.PropertyValue > aPV(0).name = "Hidden" > aPV(0).value = True > oD = > StarDesktop.loadComponentFromURL(ConvertToURL(D),"_blank",0,aPV()) > ' Datei 'unsichtbar' öffnen > > oPStyles = oD.StyleFamilies.getByName("ParagraphStyles") > For iStyle = 0 To oPStyles.Count-1 Step 1 > oStyle = oPStyles.getByIndex(iStyle) > oStyle.isAutoUpdate = False > Next iStyle > > oD.StoreAsURL(ConvertToURL(D),aD()) ' Datei speichern > oD.Close(False) ' Datei schließen > > End Sub > > [2] P E R L ( AutoAus.pl ) > > use strict; > use warnings; > > my $D; # Dateiname > my $L; # LibreOffice > my $M; # Makro > > $L = "C:/Program Files/LibreOffice/program/soffice.exe"; # > LibreOffice-Programm > > # ITER: Über alle zu aktualisierenden Dateien: > > $D = "E:/TMP/standard-defekt1.odt"; # Zu aktualisierende Datei > $M = "macro:///Standard.AutoAus.AutoAus($D)"; # Makro-Aufruf mit zu > aktualisierender Datei > `"$L" --nologo "$M"`; # Makro "unsichtbar" ausführen > > # ITER-END Ansonsten könnte ich mir noch diese krude Lösung vorstellen: Mit zgrep in allen OTT-Vorlagen suchen bei den gefundenen Dateien styles.xml entapcken Alle Atribute style:auto-update="true" entfernen XML speichern alles wieder in die OTT-Datei packen Machbar auch in Perl (ich muss mal schauen ob da nicht sogar Module für die Bearbeitung von ODF existieren, die da es einfach machen). Aber ich bin immer vorsichtig direkt in den Dateien rum zu arbeiten und nicht das Tool (=LO) zu benutzen das dazu programmiert wurde. In jedem Fall werde ich deine Idee die nächsten Tage testen und später Feedback geben wie alles gelaufen ist. Einen schönen Tag noch. @users-de Liste Bitte nicht ärgern, wenn einige Tage kein reply in die Liste kommt, die in meienr Firma ist ja auch noch zu machen, und hoffentlich vergesse ich darüber nicht das Feedback. -- Freundliche Grüße GwenDragon // Lilo von Hanffstengel -- Liste abmelden mit E-Mail an: users+unsubscr...@de.libreoffice.org Probleme? https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/ Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de Listenarchiv: https://listarchives.libreoffice.org/de/users/ Datenschutzerklärung: https://www.documentfoundation.org/privacy