Date: prev next · Thread: first prev next last
2018 Archives by date, by thread · List index


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+unsubscribe@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

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.