von wega » Di, 30.12.2008 00:04
Hallo zusammen,
ich noch einmal.
die einfachste Art eine Zeile, gespickt mit Formeln, zu übergeben ist die, dass man ein Makro aufzeichnet.
So, wie in dieser From.
Code: Alles auswählen
sub Formel_uebertragen (Formel_Row)
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 = "ToPoint"
args1(0).Value = "$A" & Formel_Row
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = args1(0).value & ":$K" & Formel_Row
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "ToPoint"
args4(0).Value = "$A" & Formel_Row + 1
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args4())
rem ----------------------------------------------------------------------
dim args5(5) as new com.sun.star.beans.PropertyValue
args5(0).Name = "Flags"
args5(0).Value = "F"
args5(1).Name = "FormulaCommand"
args5(1).Value = 0
args5(2).Name = "SkipEmptyCells"
args5(2).Value = false
args5(3).Name = "Transpose"
args5(3).Value = false
args5(4).Name = "AsLink"
args5(4).Value = false
args5(5).Name = "MoveMode"
args5(5).Value = 4
dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args5())
end sub
Die aktuelle Zeile >> " Formel_Row" übergebe ich wie folgt, indem ich in "A3" vorher die aktuelle Zeile hineinschreibe.
Z,B., nachdem ich die Formel kopiert habe. -> Kopierte Zeile +1.
[
Aber das ist eigentlich nicht das, was ich suche.
Ich suche eine Möglichkeit frei definierte Funktionen vom Makro aus in die Calc-Zeile zu schreiben und nicht Calc-Zeilen von einer Zeile in die andere zu kopieren.
Hat sich da schon jemand versucht?
Gruß
Werner
Hallo zusammen,
ich noch einmal.
die einfachste Art eine Zeile, gespickt mit Formeln, zu übergeben ist die, dass man ein Makro aufzeichnet.
So, wie in dieser From.
[code]
sub Formel_uebertragen (Formel_Row)
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 = "ToPoint"
args1(0).Value = "$A" & Formel_Row
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = args1(0).value & ":$K" & Formel_Row
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "ToPoint"
args4(0).Value = "$A" & Formel_Row + 1
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args4())
rem ----------------------------------------------------------------------
dim args5(5) as new com.sun.star.beans.PropertyValue
args5(0).Name = "Flags"
args5(0).Value = "F"
args5(1).Name = "FormulaCommand"
args5(1).Value = 0
args5(2).Name = "SkipEmptyCells"
args5(2).Value = false
args5(3).Name = "Transpose"
args5(3).Value = false
args5(4).Name = "AsLink"
args5(4).Value = false
args5(5).Name = "MoveMode"
args5(5).Value = 4
dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args5())
end sub
[/code]
Die aktuelle Zeile >> " Formel_Row" übergebe ich wie folgt, indem ich in "A3" vorher die aktuelle Zeile hineinschreibe.
Z,B., nachdem ich die Formel kopiert habe. -> Kopierte Zeile +1.
[[code]Formel_Row = mySheet.getCellRangeByName("A3").value
[/code]
Aber das ist eigentlich nicht das, was ich suche.
Ich suche eine Möglichkeit frei definierte Funktionen vom Makro aus in die Calc-Zeile zu schreiben und nicht Calc-Zeilen von einer Zeile in die andere zu kopieren.
Hat sich da schon jemand versucht?
Gruß
Werner