von Niels » Fr, 20.08.2004 21:17
Wie wäre es denn, die Zelle im Zieldokument zu aktivieren, ab der einegfügt werden soll und dann per Makro Zelle für Zelle von Ursprungstabelle lesen (da ist noch die Frage, wie man das angeben kann, aus welcher Tabelle gelesen werden soll), bis man z.B. auf 3 leere Zellen nacheinander (vermutlich kommt dann nichts mehr) stößt. Dauert vielleicht etwas, aber müsste funktionieren.
Zum Markieren müsste man die Tastenkombination Strg+Ende - Strg+Shift+Pos1 - Schift+Cursor runter - Strg+C verwenden. Dass kann man aufzeichnen:
Code: Alles auswählen
sub Complete
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(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Sel"
args1(0).Value = false
dispatcher.executeDispatch(document, ".uno:GoToEndOfData", "", 0, args1())
rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Sel"
args2(0).Value = true
dispatcher.executeDispatch(document, ".uno:GoToStart", "", 0, args2())
rem ----------------------------------------------------------------------
dim args3(1) as new com.sun.star.beans.PropertyValue
args3(0).Name = "By"
args3(0).Value = 1
args3(1).Name = "Sel"
args3(1).Value = true
dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args3())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
rem ----------------------------------------------------------------------
dim args5(0) as new com.sun.star.beans.PropertyValue
args5(0).Name = "Nr"
args5(0).Value = 2
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args5())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
end sub
Leider vergisst dieses Makro die Corsorposition. Die muss Du also vorher auslesen und danach wieder ansteuern. Auslesen habe ich schon gemacht:
Code: Alles auswählen
Dim oDoc as Object
Dim oZelle as Object
Dim oZeile as Integer
oDoc=thisComponent
oZelle=oDoc.getCurrentSelection().getCellAddress()
oZeile=oZelle.row
Genau so kann man ja sicher,mit etwas lesen im Programmierhandbuch, auch die aktive Tabelle ermitteln. Das Ansteuern einer Zelle kannst Du auch aufzeichnen und musst nur noch Deine Variablen einfügen:
rem ----------------------------------------------------------------------
rem define variables
dim document as object
Dim Sheet As Object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
Sheet = Doc.Sheets(1)
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$A$1"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
Ich hofffe, Dir damit einen Denkanstoß gegeben zu haben.
Ciao
Niels
Wie wäre es denn, die Zelle im Zieldokument zu aktivieren, ab der einegfügt werden soll und dann per Makro Zelle für Zelle von Ursprungstabelle lesen (da ist noch die Frage, wie man das angeben kann, aus welcher Tabelle gelesen werden soll), bis man z.B. auf 3 leere Zellen nacheinander (vermutlich kommt dann nichts mehr) stößt. Dauert vielleicht etwas, aber müsste funktionieren.
Zum Markieren müsste man die Tastenkombination Strg+Ende - Strg+Shift+Pos1 - Schift+Cursor runter - Strg+C verwenden. Dass kann man aufzeichnen:
[code]sub Complete
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(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Sel"
args1(0).Value = false
dispatcher.executeDispatch(document, ".uno:GoToEndOfData", "", 0, args1())
rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Sel"
args2(0).Value = true
dispatcher.executeDispatch(document, ".uno:GoToStart", "", 0, args2())
rem ----------------------------------------------------------------------
dim args3(1) as new com.sun.star.beans.PropertyValue
args3(0).Name = "By"
args3(0).Value = 1
args3(1).Name = "Sel"
args3(1).Value = true
dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args3())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
rem ----------------------------------------------------------------------
dim args5(0) as new com.sun.star.beans.PropertyValue
args5(0).Name = "Nr"
args5(0).Value = 2
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args5())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
end sub[/code]
Leider vergisst dieses Makro die Corsorposition. Die muss Du also vorher auslesen und danach wieder ansteuern. Auslesen habe ich schon gemacht:[code] Dim oDoc as Object
Dim oZelle as Object
Dim oZeile as Integer
oDoc=thisComponent
oZelle=oDoc.getCurrentSelection().getCellAddress()
oZeile=oZelle.row
[/code]
Genau so kann man ja sicher,mit etwas lesen im Programmierhandbuch, auch die aktive Tabelle ermitteln. Das Ansteuern einer Zelle kannst Du auch aufzeichnen und musst nur noch Deine Variablen einfügen:[quote]rem ----------------------------------------------------------------------
rem define variables
dim document as object
Dim Sheet As Object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
Sheet = Doc.Sheets(1)
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$A$1"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())[/quote]
Ich hofffe, Dir damit einen Denkanstoß gegeben zu haben.
Ciao
Niels