da wir nur mit Tabellenkalkulation arbeiten (bisher Excel 98), würden wir beim Umsteig auf OOo gerne in Calc unsere Textbausteine (einfügen per Tastenkürzel) weiterverwenden. Nun funktioniert Autotext nicht in Calc, weswegen eine andere Lösung her muss.
Ich habe mit meinen begrenzten BASIC-Kenntnissen mal dieses Makro zusammengebastelt. Hier sollte aus einer Calc-Datei mit den Textbausteinen der Textbaustein kopiert und in das geöffnete Calcdokument, dort wo der Cursor sitzt, der Textbaustein eingefügt werden. Funktioniert natürlich noch nicht (ganz), da mir hier noch diverse Sachen fehlen. Wenn ich das Makro etwas umschreibe, funktioniert es mit einem fest definiertem Zielfeld und nur innerhalb der Quelldatei, aber das ist nicht das, was ich möchte.
Code: Alles auswählen
Sub Textbaustein_Test
Dim SourceDoc as Variant
Dim TargetDoc as Variant
Dim SourceSheet as Variant
Dim TargetSheet as Variant
REM Texte öffnen = SourceDoc
url=converttourl("C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\Dokumente\intern\Texte.ods")
dim myFileProp() as new com.sun.star.beans.PropertyValue
SourceDoc = StarDesktop.loadComponentFromURL(url, "_blank", 0, myFileProp() ) 'evtl. versteckt öffnen oder gleich beim Systemstart laden
REM hier evtl. noch eine If...When-Prüfung, ob die Datei bereits geöffnet ist
REM Blatt auswählen
SourceView = SourceDoc.CurrentController
SourceSheet = SourceDoc.Sheets.getByName("Blattname")
SourceView.setActiveSheet(SourceSheet) 'aktiviert Blatt
mySourceCell1 = SourceSheet.getCellRangeByName("$B$3") 'nur ein Feld zum Testen. Hier muss es eigentlich ein Zellbereich sein
myString = mySourceCell1.string
REM = TargetDoc
TargetDoc = ??? 'Syntax unbekannt
Targetsheet = TargetDoc.sheets.getByName("Blattname") 'oder was auch immer hier hingehört
myTargetCell1 = TargetSheet.getCellRangeByName("$A$1") 'statt Fixfeld muss hier das gerade ausgewählte Feld als Ziel hin. Syntax?
myTargetCell1.string = myString
End Sub
Die Lösung ist auch nicht sonderlich elegant, da die Quelldatei sichtbar geöffnet wird und das Ganze mit einer deutlichen Verzögerung abläuft. Eine Lösung, bei der der Textbaustein einfach eingefügt wird, ohne dass der Anwender eine Verzögerung oder vom Ablauf etwas merkt, wäre mir wesentlich lieber.
Hat da jemand eine Idee oder gar einen fertigen Lösungvorschlag?