Seite 1 von 1
Formatvorlage per Macro laden
Verfasst: Sa, 15.02.2020 11:26
von seballa
Hallo,
ich öffne eine unformatierte Textdatei per Command Line .
Code: Alles auswählen
soffice.exe -n c:\path\filename.txt macro:///Standard.Format.Main --infilter="Text (encoded):UTF8"
Damit die Datei direkt formatiert wird habe ich ein Makro aufgenommen, das bestimmte Textteile erkennt und dann die Absatzstile zuweist. Ich muss vorher allerdings mit der Hand meine Vorlage (die auch die Standardvorlage ist) mit den gewünschten Stilen laden. Diesen Schritt hat die Aufnahmefunktion nicht erkannt.
Kann ich das auch per Makro machen?
Danke
Seballa
Re: Formatvorlage per Macro laden
Verfasst: Sa, 15.02.2020 15:17
von Toxitom
Hey Seballa,
..Kann ich das auch per Makro machen?
Ja, natürlich. Mit Makros kannst Du so zeimlich alles machen;)
Mit der Aufnahemfunktion allerdings nicht. Die ist sehr "beschränkt".
Wäre es aber nicht generell besser, gleich die gewünschten Formate in die Standardvorlage hinein zu packen? Dann könnteste Dir den Schritt über das Makro sparen.
Ansonsten: Poste mal Dein bisheriges Makro sowie Deine Wünsche hinsichtlich der Formate... dann gibt es bestimmt Hilfe hier:)
VG
Tom
Re: Formatvorlage per Macro laden
Verfasst: Sa, 15.02.2020 16:45
von seballa
Hallo Toxitom,
danke für die Antwort.
Wäre es aber nicht generell besser, gleich die gewünschten Formate in die Standardvorlage hinein zu packen? Dann könnteste Dir den Schritt über das Makro sparen.
Das war meine erste Idee, ich bin aber ein bisschen am Verzweifeln da es nicht wie erwartet funktioniert.
Ich habe eine Standvorlage erstellt und auch als Standard für Textdokumente gesetzt. Das funktioniertwunderbar für neue Dokumente aber nicht für eine bereits vorhandene TXT Datei, in dieser werden meine eigenen Vorlagen nicht angezeigt. Ich muss dann meine Vorlage per Hand laden.
Code: Alles auswählen
//Datei öffnen per batch datei und Makro automatisch auslösen
-->soffice.exe -n c:\path\filename.txt macro:///Standard.Format.Main --infilter="Text (encoded):UTF8"
//MEIN PROBLEM HIER MEINE ABSATZVORLAGEN SIND NICHT IM DER GEÖFFNETEN DATEI ENTHALTEN
//Mein aufgenommenes Makro:
-->Markiere den gesamten Text
-->Benutze Absatzvorlage "MeinText"
-->Suche alle Elemente mit dem String XXX in der Zeile
-->Benutze Absatzvorlage "MeineÜberschrift"
-->Ersetze alle XXX mit ""
Plan B wäre, ein neues Dokument zu öffnen und das Makro automatisch abzufeuern, dass dann den Text aus der Datei importiert, ich habe inzwischen zwei Stunden hier im Forum und im Internet gesucht und konnte es bisher nicht schaffen den Importfilter auf UTF8 zu setzten.
Code: Alles auswählen
Weg B
//Neues Dokument öffnen
-->soffice.exe macro:///Standard.GetTextAndFormat.Main
//Füge den die Txt Datei ein SCHEITERT DARAN DAS ICH DEN UTF8 Filter nicht gesetzt bekomme
dim args2(1) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Name"
args2(0).Value = "file:///C:/Users/Dummy/Documents/filename.txt"
args2(1).Name = "Filter"
args2(1).Value = "Text (encoded):UTF8" //Wo ist mein Fehler TUT NICHTS!
dispatcher.executeDispatch(document, ".uno:InsertDoc", "", 0, args2())
MeinMakro...
Re: Formatvorlage per Macro laden
Verfasst: Sa, 15.02.2020 22:31
von seballa
Es war ein langes rumprobieren, ich habe es dann mit Variante A hinbekommen:
Die Datei (in meinem Fall ist das eine PHP Webseite, die Daten aus einer Mysql Datenbank ausgibt) wird durch eine Batchdatei geladen und dabei direkt das Makro aufgerufen:
Code: Alles auswählen
soffice.exe -n "c:\path\filename.txt" macro:///Standard.MeinMakro.Main --infilter="Text (encoded):UTF8"
sub Main
rem define variables
dim document as object
dim dispatcher as object
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem Document mit den Templates in die Datei laden
dim args2(1) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Name"
args2(0).Value = "file:///C:/Path/to/tamplate/template.ott"
args2(1).Name = "Filter"
args2(1).Value = "writer8_template"
dispatcher.executeDispatch(document, ".uno:InsertDoc", "", 0, args2())
rem Alles auswählen
dispatcher.executeDispatch(document, ".uno:SelectAll", "", 0, Array())
rem Set Template
dim args4(1) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Template"
args4(0).Value = "myTemplateforText"
args4(1).Name = "Family"
args4(1).Value = 2
dispatcher.executeDispatch(document, ".uno:StyleApply", "", 0, args4())
rem Find all Lines containing XXX
dim args5(21) as new com.sun.star.beans.PropertyValue
args5(0).Name = "SearchItem.StyleFamily"
args5(0).Value = 2
args5(1).Name = "SearchItem.CellType"
args5(1).Value = 0
args5(2).Name = "SearchItem.RowDirection"
args5(2).Value = true
args5(3).Name = "SearchItem.AllTables"
args5(3).Value = false
args5(4).Name = "SearchItem.SearchFiltered"
args5(4).Value = false
args5(5).Name = "SearchItem.Backward"
args5(5).Value = false
args5(6).Name = "SearchItem.Pattern"
args5(6).Value = false
args5(7).Name = "SearchItem.Content"
args5(7).Value = false
args5(8).Name = "SearchItem.AsianOptions"
args5(8).Value = false
args5(9).Name = "SearchItem.AlgorithmType"
args5(9).Value = 0
args5(10).Name = "SearchItem.SearchFlags"
args5(10).Value = 65536
args5(11).Name = "SearchItem.SearchString"
args5(11).Value = "XXX"
args5(12).Name = "SearchItem.ReplaceString"
args5(12).Value = ""
args5(13).Name = "SearchItem.Locale"
args5(13).Value = 255
args5(14).Name = "SearchItem.ChangedChars"
args5(14).Value = 2
args5(15).Name = "SearchItem.DeletedChars"
args5(15).Value = 2
args5(16).Name = "SearchItem.InsertedChars"
args5(16).Value = 2
args5(17).Name = "SearchItem.TransliterateFlags"
args5(17).Value = 1280
args5(18).Name = "SearchItem.Command"
args5(18).Value = 1
args5(19).Name = "SearchItem.SearchFormatted"
args5(19).Value = false
args5(20).Name = "SearchItem.AlgorithmType2"
args5(20).Value = 1
args5(21).Name = "Quiet"
args5(21).Value = true
dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args5())
rem Set Template for Headline
dim args6(1) as new com.sun.star.beans.PropertyValue
args6(0).Name = "Template"
args6(0).Value = "Headline"
args6(1).Name = "Family"
args6(1).Value = 2
dispatcher.executeDispatch(document, ".uno:StyleApply", "", 0, args6())
rem same search but replace with empty string
dim args7(21) as new com.sun.star.beans.PropertyValue
args7(0).Name = "SearchItem.StyleFamily"
args7(0).Value = 2
args7(1).Name = "SearchItem.CellType"
args7(1).Value = 0
args7(2).Name = "SearchItem.RowDirection"
args7(2).Value = true
args7(3).Name = "SearchItem.AllTables"
args7(3).Value = false
args7(4).Name = "SearchItem.SearchFiltered"
args7(4).Value = false
args7(5).Name = "SearchItem.Backward"
args7(5).Value = false
args7(6).Name = "SearchItem.Pattern"
args7(6).Value = false
args7(7).Name = "SearchItem.Content"
args7(7).Value = false
args7(8).Name = "SearchItem.AsianOptions"
args7(8).Value = false
args7(9).Name = "SearchItem.AlgorithmType"
args7(9).Value = 0
args7(10).Name = "SearchItem.SearchFlags"
args7(10).Value = 65536
args7(11).Name = "SearchItem.SearchString"
args7(11).Value = "XXX"
args7(12).Name = "SearchItem.ReplaceString"
args7(12).Value = ""
args7(13).Name = "SearchItem.Locale"
args7(13).Value = 255
args7(14).Name = "SearchItem.ChangedChars"
args7(14).Value = 2
args7(15).Name = "SearchItem.DeletedChars"
args7(15).Value = 2
args7(16).Name = "SearchItem.InsertedChars"
args7(16).Value = 2
args7(17).Name = "SearchItem.TransliterateFlags"
args7(17).Value = 1280
args7(18).Name = "SearchItem.Command"
args7(18).Value = 3
args7(19).Name = "SearchItem.SearchFormatted"
args7(19).Value = false
args7(20).Name = "SearchItem.AlgorithmType2"
args7(20).Value = 1
args7(21).Name = "Quiet"
args7(21).Value = true
dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args7())
end sub