von Ottmar » Mi, 09.06.2021 12:29
Hallo liebes Forum
Ich bin neu in diesem Thema, habe mit OpenOffice-Programmierung relativ wenig zu tun, sitze nun vor einem Problem, dass ich trotz massiver Recherche auch in diesem Forum nicht gelöst kriege.
Ausgangslage. Ein OpenOffice-Writer Dokument enthält eine Tabelle mit verschiedenen Platzhaltern der Art $$$Text. In der Vorlage mit den Platzhaltern sind alle Zellen 'Text'
Diese Platzhalter sollen durch Werte aus einer anderen Anwendung ersetzt werden. Das habe ich alles soweit hingekriegt, ABER:
Die Werte aus der anderen Anwerndung sind manchmal Texte, manchmal aber auch Zahlen (Währungsformat, Prozentzahlen usw.) Nachdem durch das von mir geschriebene Makro $$$Text durch einen Text ersetzt wird, der nur Ziffern darstellt, formatiert OpenOffice das um setzt Nachkommastellen, interpretiert Zahlen als Datum usw. Es gibt doch bestimmt irgendwo eine Klasse, Methode oder sonst was, was dieses ganze Uminterpretieren einfach abstellt, so dass die Texte einfach Texte bleiben.
In diesem Forum hier bin ich auf lockController gestoßen, der schiem mir erst brauchbar, mit dem schieße ich aber am Ziel vorbei, der 'vertagt' - so wie ich das sehe - ja auch nur die Dokumentaktualisierung auf später.
Mein Macro läuft im übriegens nicht im Office, sondern in einer externen Anwendung "HCL Notes / Domino", insfern wirkt die Syntax von folgendem Code für OpenOffice-Programmierprofis wahrscheinlich etwas aufgebläht und gewöhnungsbedürftig, sie läuft aber ansonsten prima.
Code: Alles auswählen
Redim UNOArgs1(3)
Set UNOArgument1 = OLEClient.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
Set UNOArgument2 = OLEClient.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
Set UNOArgument3 = OLEClient.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
Set UNOArgument4 = OLEClient.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
UNOArgument1.Name = "SearchItem.SearchString"
UNOArgument1.Value = Cstr(strSource)
UNOArgument2.Name = "SearchItem.ReplaceString"
UNOArgument2.Value = Cstr(strDest)
UNOArgument3.Name = "SearchItem.Command"
UNOArgument3.Value = 3
UNOArgument4.Name = "Quiet"
UNOArgument4.Value = True
Set UNOArgs1(0) = UNOArgument1
Set UNOArgs1(1) = UNOArgument2
Set UNOArgs1(2) = UNOArgument3
Set UNOArgs1(3) = UNOArgument4
Call UNODispatcher.executeDispatch(UNODocument, ".uno:ExecuteSearch", "", 0, UNOArgs1)
Wer hilft mir auf die Sprünge?
Hallo liebes Forum
Ich bin neu in diesem Thema, habe mit OpenOffice-Programmierung relativ wenig zu tun, sitze nun vor einem Problem, dass ich trotz massiver Recherche auch in diesem Forum nicht gelöst kriege.
Ausgangslage. Ein OpenOffice-Writer Dokument enthält eine Tabelle mit verschiedenen Platzhaltern der Art $$$Text. In der Vorlage mit den Platzhaltern sind alle Zellen 'Text'
Diese Platzhalter sollen durch Werte aus einer anderen Anwendung ersetzt werden. Das habe ich alles soweit hingekriegt, ABER:
Die Werte aus der anderen Anwerndung sind manchmal Texte, manchmal aber auch Zahlen (Währungsformat, Prozentzahlen usw.) Nachdem durch das von mir geschriebene Makro $$$Text durch einen Text ersetzt wird, der nur Ziffern darstellt, formatiert OpenOffice das um setzt Nachkommastellen, interpretiert Zahlen als Datum usw. Es gibt doch bestimmt irgendwo eine Klasse, Methode oder sonst was, was dieses ganze Uminterpretieren einfach abstellt, so dass die Texte einfach Texte bleiben.
In diesem Forum hier bin ich auf lockController gestoßen, der schiem mir erst brauchbar, mit dem schieße ich aber am Ziel vorbei, der 'vertagt' - so wie ich das sehe - ja auch nur die Dokumentaktualisierung auf später.
Mein Macro läuft im übriegens nicht im Office, sondern in einer externen Anwendung "HCL Notes / Domino", insfern wirkt die Syntax von folgendem Code für OpenOffice-Programmierprofis wahrscheinlich etwas aufgebläht und gewöhnungsbedürftig, sie läuft aber ansonsten prima.
[code]
Redim UNOArgs1(3)
Set UNOArgument1 = OLEClient.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
Set UNOArgument2 = OLEClient.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
Set UNOArgument3 = OLEClient.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
Set UNOArgument4 = OLEClient.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
UNOArgument1.Name = "SearchItem.SearchString"
UNOArgument1.Value = Cstr(strSource)
UNOArgument2.Name = "SearchItem.ReplaceString"
UNOArgument2.Value = Cstr(strDest)
UNOArgument3.Name = "SearchItem.Command"
UNOArgument3.Value = 3
UNOArgument4.Name = "Quiet"
UNOArgument4.Value = True
Set UNOArgs1(0) = UNOArgument1
Set UNOArgs1(1) = UNOArgument2
Set UNOArgs1(2) = UNOArgument3
Set UNOArgs1(3) = UNOArgument4
Call UNODispatcher.executeDispatch(UNODocument, ".uno:ExecuteSearch", "", 0, UNOArgs1)
[/code]
Wer hilft mir auf die Sprünge?