von sven-my » Sa, 13.10.2012 13:10
Hallo,
so, jetzt bin ich wieder aufnahmefähig. Wo der eigentliche Fehler lag, konnte ich nicht herausfinden, auch völliges Benden von AOO half nicht. Heute morgen habe ich dann mein Dokument geöffnet, den Dialog repariert, das gelöschte Makro wiederhergestellt - jetzt läufts.
Zu meiner eigentlichen Frage habe ich eine "Lösung" gefunden (von hinten durch die Brust, ins linke Auge):
Code: Alles auswählen
sub aktualisieren
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
REM tabN = "das Tabellenblatt, welches aktualisiert werden soll"
myDoc = ThisComponent
oView = myDoc.CurrentController
oSheet = myDoc.Sheets.getByName(tabN)
oView.setActiveSheet(oSheet)
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = "$AC$1"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "StringName"
args3(0).Value = "1"
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args3())
dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())
args2(0).Name = "ToPoint"
args2(0).Value = "$AC$1"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())
args3(0).Name = "StringName"
args3(0).Value = ""
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args3())
dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())
end sub
Mir ist klar, jedem der Experten von Basic sträuben sich sämtliche Haare, aber es funktioniert.
Diesen code habe ich an das Kopier-Makro (das Makro sucht aus einem Datensatz, der aus 26 Datenfeldern besteht, für eine andere Aufgabe 6 Datenfelder raus, und kopiert sie auf ein anderes Tabellenblatt) angehängt.
Falls jemand eine Vereinfachung, oder Verbesserung hätte, wäre ich sehr dankbar.
gruß
sven-my
Hallo,
so, jetzt bin ich wieder aufnahmefähig. Wo der eigentliche Fehler lag, konnte ich nicht herausfinden, auch völliges Benden von AOO half nicht. Heute morgen habe ich dann mein Dokument geöffnet, den Dialog repariert, das gelöschte Makro wiederhergestellt - jetzt läufts.
Zu meiner eigentlichen Frage habe ich eine "Lösung" gefunden (von hinten durch die Brust, ins linke Auge):
[code]sub aktualisieren
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
REM tabN = "das Tabellenblatt, welches aktualisiert werden soll"
myDoc = ThisComponent
oView = myDoc.CurrentController
oSheet = myDoc.Sheets.getByName(tabN)
oView.setActiveSheet(oSheet)
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = "$AC$1"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "StringName"
args3(0).Value = "1"
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args3())
dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())
args2(0).Name = "ToPoint"
args2(0).Value = "$AC$1"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())
args3(0).Name = "StringName"
args3(0).Value = ""
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args3())
dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())
end sub[/code]
Mir ist klar, jedem der Experten von Basic sträuben sich sämtliche Haare, aber es funktioniert.
Diesen code habe ich an das Kopier-Makro (das Makro sucht aus einem Datensatz, der aus 26 Datenfeldern besteht, für eine andere Aufgabe 6 Datenfelder raus, und kopiert sie auf ein anderes Tabellenblatt) angehängt.
Falls jemand eine Vereinfachung, oder Verbesserung hätte, wäre ich sehr dankbar.
gruß
sven-my