von chrk » Mo, 17.03.2008 22:28
Hallo Dennis,
ich habe mir gerade Euer Word-Dokument mit den AutoNr-Feldern noch mal angesehen.
Ich habe erst daran geknackt, dass ich in OOo keine Option finde, nach Feldeinträgen zu suchen, denn darauf hätte man schön eine Automatisierung per Makro aufbauen können.
Jetzt bin ich aber darauf gestoßen, dass Ihr Absatzvorlagen (im Beispiel 'Script Sprecher') einsetzt. Nach denen kann man suchen, und zwar rückwärts, damit jeweils der Absatz mit der höchsten AutoNr durch 'Nur Text' ersetzt wird. Die Absatzvorlage bleibt dabei erhalten, weil die Absatzmarke erhalten bleibt.
Probier das mal manuell: Geh zum Dokumentende und ruf die Suchfunktion auf. Aktiviere "Mehr Optionen", dann "Rückwärts" und "Suche nach Vorlagen". Stell im Suchen-Feld "Skript Sprecher" ein und klicke Suchen. Damit wird der letzte Absatz mit dieser Vorlage markiert, den ausschneiden und als 'Nur Text' wieder einfügen. Vor dem nächsten Umlauf musst Du den Cursor zum Anfang des aktuellen Absatzes bewegen, weil der sonst nochmal gefunden wird.
Dieser Vorgang lässt sich mit dem Makrorekorder aufzeichnen (Extras>Makros>Makro aufzeichnen).
Der Makrorekorder
Das ist das Ergebnis meiner Aufzeichnung, problematisch ist nur, dass es in dieser Form nur bei einzeiligen Absätzen funktioniert (letzte Zeile: .uno:GoToEndOfLine). Aber da kann Dir hier bestimmt noch jemand Tipps geben. Vielleicht steuert auch noch jemand bei, wie man eine Schleife formuliert, die das Dokument von unten nach oben durchläuft und bereinigt die Suche um überflüssige Argumente.
Hier wird erläutert, wie man ein Makro installiert:
MakrosInstallieren, und so bekommst Du es auf eine Schaltfläche oder Tastenkombination:
MakrosMitEinemKlick.
Code: Alles auswählen
sub sucheSkriptSprecher
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(18) as new com.sun.star.beans.PropertyValue
args1(0).Name = "SearchItem.StyleFamily"
args1(0).Value = 2
args1(1).Name = "SearchItem.CellType"
args1(1).Value = 0
args1(2).Name = "SearchItem.RowDirection"
args1(2).Value = true
args1(3).Name = "SearchItem.AllTables"
args1(3).Value = false
args1(4).Name = "SearchItem.Backward"
args1(4).Value = true
args1(5).Name = "SearchItem.Pattern"
args1(5).Value = true
args1(6).Name = "SearchItem.Content"
args1(6).Value = false
args1(7).Name = "SearchItem.AsianOptions"
args1(7).Value = false
args1(8).Name = "SearchItem.AlgorithmType"
args1(8).Value = 0
args1(9).Name = "SearchItem.SearchFlags"
args1(9).Value = 65536
args1(10).Name = "SearchItem.SearchString"
args1(10).Value = "Skript Sprecher"
args1(11).Name = "SearchItem.ReplaceString"
args1(11).Value = "Skript Sprecher"
args1(12).Name = "SearchItem.Locale"
args1(12).Value = 255
args1(13).Name = "SearchItem.ChangedChars"
args1(13).Value = 2
args1(14).Name = "SearchItem.DeletedChars"
args1(14).Value = 2
args1(15).Name = "SearchItem.InsertedChars"
args1(15).Value = 2
args1(16).Name = "SearchItem.TransliterateFlags"
args1(16).Value = 1280
args1(17).Name = "SearchItem.Command"
args1(17).Value = 0
args1(18).Name = "Quiet"
args1(18).Value = true
dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args1())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Cut", "", 0, Array())
rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "SelectedFormat"
args3(0).Value = 1
dispatcher.executeDispatch(document, ".uno:ClipboardFormatItems", "", 0, args3())
dispatcher.executeDispatch(document, ".uno:GoToStartOfLine", "", 0, Array())
end sub
Hallo Dennis,
ich habe mir gerade Euer Word-Dokument mit den AutoNr-Feldern noch mal angesehen.
Ich habe erst daran geknackt, dass ich in OOo keine Option finde, nach Feldeinträgen zu suchen, denn darauf hätte man schön eine Automatisierung per Makro aufbauen können.
Jetzt bin ich aber darauf gestoßen, dass Ihr Absatzvorlagen (im Beispiel 'Script Sprecher') einsetzt. Nach denen kann man suchen, und zwar rückwärts, damit jeweils der Absatz mit der höchsten AutoNr durch 'Nur Text' ersetzt wird. Die Absatzvorlage bleibt dabei erhalten, weil die Absatzmarke erhalten bleibt.
Probier das mal manuell: Geh zum Dokumentende und ruf die Suchfunktion auf. Aktiviere "Mehr Optionen", dann "Rückwärts" und "Suche nach Vorlagen". Stell im Suchen-Feld "Skript Sprecher" ein und klicke Suchen. Damit wird der letzte Absatz mit dieser Vorlage markiert, den ausschneiden und als 'Nur Text' wieder einfügen. Vor dem nächsten Umlauf musst Du den Cursor zum Anfang des aktuellen Absatzes bewegen, weil der sonst nochmal gefunden wird.
Dieser Vorgang lässt sich mit dem Makrorekorder aufzeichnen (Extras>Makros>Makro aufzeichnen).
[url=http://www.ooowiki.de/Makro?highlight=%28makrorekorder%29#head-4b224ba9fe28143b7adeab96c9792d97ed1ef524]Der Makrorekorder[/url]
Das ist das Ergebnis meiner Aufzeichnung, problematisch ist nur, dass es in dieser Form nur bei einzeiligen Absätzen funktioniert (letzte Zeile: .uno:GoToEndOfLine). Aber da kann Dir hier bestimmt noch jemand Tipps geben. Vielleicht steuert auch noch jemand bei, wie man eine Schleife formuliert, die das Dokument von unten nach oben durchläuft und bereinigt die Suche um überflüssige Argumente.
Hier wird erläutert, wie man ein Makro installiert: [url=http://www.ooowiki.de/MakrosInstallieren?highlight=%28KategorieMakro%29]MakrosInstallieren[/url], und so bekommst Du es auf eine Schaltfläche oder Tastenkombination: [url=http://www.ooowiki.de/MakrosMitEinemKlick]MakrosMitEinemKlick[/url].
[code]sub sucheSkriptSprecher
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(18) as new com.sun.star.beans.PropertyValue
args1(0).Name = "SearchItem.StyleFamily"
args1(0).Value = 2
args1(1).Name = "SearchItem.CellType"
args1(1).Value = 0
args1(2).Name = "SearchItem.RowDirection"
args1(2).Value = true
args1(3).Name = "SearchItem.AllTables"
args1(3).Value = false
args1(4).Name = "SearchItem.Backward"
args1(4).Value = true
args1(5).Name = "SearchItem.Pattern"
args1(5).Value = true
args1(6).Name = "SearchItem.Content"
args1(6).Value = false
args1(7).Name = "SearchItem.AsianOptions"
args1(7).Value = false
args1(8).Name = "SearchItem.AlgorithmType"
args1(8).Value = 0
args1(9).Name = "SearchItem.SearchFlags"
args1(9).Value = 65536
args1(10).Name = "SearchItem.SearchString"
args1(10).Value = "Skript Sprecher"
args1(11).Name = "SearchItem.ReplaceString"
args1(11).Value = "Skript Sprecher"
args1(12).Name = "SearchItem.Locale"
args1(12).Value = 255
args1(13).Name = "SearchItem.ChangedChars"
args1(13).Value = 2
args1(14).Name = "SearchItem.DeletedChars"
args1(14).Value = 2
args1(15).Name = "SearchItem.InsertedChars"
args1(15).Value = 2
args1(16).Name = "SearchItem.TransliterateFlags"
args1(16).Value = 1280
args1(17).Name = "SearchItem.Command"
args1(17).Value = 0
args1(18).Name = "Quiet"
args1(18).Value = true
dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args1())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Cut", "", 0, Array())
rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "SelectedFormat"
args3(0).Value = 1
dispatcher.executeDispatch(document, ".uno:ClipboardFormatItems", "", 0, args3())
dispatcher.executeDispatch(document, ".uno:GoToStartOfLine", "", 0, Array())
end sub
[/code]