von SIRE.de » Di, 27.07.2010 17:13
Hallo zusammen!
Versuch mich seit heute morgen um 8Uhr an einer (hoffentlich) simplen Aufgabe.
Ich habe zwei Calc Tabellen. Eine dient als einfache "Eingabemaske", die zweite als "Speicherort".
Der Speicherort heisst "IIS_Daten.ods" und besitzt zahlreiche Mappen.
Bisher hab ich folgenden Code zusammengebracht.
Kurzzusammenfassung was bisher passiert:
Zuerst gehts in der Eingabemaske runter bis zu den zu kopirenden Zellen
Es werden vier Zellen kopiert.
Die Daten Datei wird geöffnent
In der Entsprechenden Mappe geht es solange runter bis ans Ende der Liste
Dann soll der Inhalt eingefügt werden. Und genau das klappt nicht!
"dispatcher.executeDispatch(Sheet, ".uno:InsertContents", "", 0, args11())"
wenn ich "Sheet" durch "document" ersetze ist, wird der Inhalt in der Eingabemaske eingefügt. So kommt es zur Fehlermeldung.
IIS_Daten wird gespeichert und wieder geschlossen.
Code: Alles auswählen
REM ***** BASIC *****
Sub Main
dim Halb as string
Halb = "Neues Halbzeug abspeichern"
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 args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = "$A$1"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())
rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "By"
args3(0).Value = 1
args3(0).Name = "Sel"
args3(0).Value = false
rem ----------------------------------------------------------------------
PosZeile = 0
oDoc = thisComponent
mySheet = oDoc.Sheets().getByName("IIS")
Do Until mySheet.getcellbyPosition(0,PosZeile).string = Halb
dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args3())
Poszeile = Poszeile + 1
loop
rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "By"
args4(0).Value = 1
args4(0).Name = "Sel"
args4(0).Value = false
dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args4())
rem ab hier
rem ----------------------------------------------------------------------
dim args5(1) as new com.sun.star.beans.PropertyValue
args5(0).Name = "By"
args5(0).Value = 1
args5(1).Name = "Sel"
args5(1).Value = true
dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args5())
rem ----------------------------------------------------------------------
dim args6(1) as new com.sun.star.beans.PropertyValue
args6(0).Name = "By"
args6(0).Value = 1
args6(1).Name = "Sel"
args6(1).Value = true
dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args6())
rem ----------------------------------------------------------------------
dim args7(1) as new com.sun.star.beans.PropertyValue
args7(0).Name = "By"
args7(0).Value = 1
args7(1).Name = "Sel"
args7(1).Value = true
dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args7())
rem ----------------------------------------------------------------------
dim args8(1) as new com.sun.star.beans.PropertyValue
args8(0).Name = "By"
args8(0).Value = 1
args8(1).Name = "Sel"
args8(1).Value = true
dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args8())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
rem ----------------------------------------------------------------------
dim args11(5) as new com.sun.star.beans.PropertyValue
args11(0).Name = "Flags"
args11(0).Value = "SVDT"
args11(1).Name = "FormulaCommand"
args11(1).Value = 0
args11(2).Name = "SkipEmptyCells"
args11(2).Value = false
args11(3).Name = "Transpose"
args11(3).Value = false
args11(4).Name = "AsLink"
args11(4).Value = false
args11(5).Name = "MoveMode"
args11(5).Value = 4
rem ----------------------------------------------------------------------
Dim Pfad as String
Dim Dummy()
Dim Url as String
Dim Calc as Object
Dim Sheet as Object
Dim Zelle as Object
Pfad = "file:///C:/IIS/IIS_Daten.ods"
Url = ConvertToUrl(Pfad)
Calc = StarDesktop.loadComponentFromUrl(Url, "_blank",0,Dummy())
Sheet = Calc.sheets("IIS HALBZEUG")
rem hier geht es in Halbzeug runter
Poszeile2 = 1
rem #oDoc2 = thisComponent
rem #mySheet2 = oDoc2.Sheets().getByName("IIS HALBZEUG")
Do Until Sheet.getcellbyPosition(0,Poszeile2).value = "0"
dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args3())
Poszeile2 = Poszeile2 + 1
loop
rem dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args3())
Zelle = Sheet.getCellbyPosition(0,Poszeile2)
dispatcher.executeDispatch(Sheet, ".uno:InsertContents", "", 0, args11())
rem Zelle.String = "Test hat geklappt"
rem #dispatcher.executeDispatch(oDoc2, ".uno:InsertContents", "", 0, args11())
If (Calc.isModified) then ' Calc-Doku speichern, wenn geändert
Calc.store()
End if
Calc.close(0)
End Sub
Über Hilfe würde ich mich sehr freuen ...
Mit freundlichen Grüßen
Thomas
Hallo zusammen!
Versuch mich seit heute morgen um 8Uhr an einer (hoffentlich) simplen Aufgabe.
Ich habe zwei Calc Tabellen. Eine dient als einfache "Eingabemaske", die zweite als "Speicherort".
Der Speicherort heisst "IIS_Daten.ods" und besitzt zahlreiche Mappen.
Bisher hab ich folgenden Code zusammengebracht.
Kurzzusammenfassung was bisher passiert:
Zuerst gehts in der Eingabemaske runter bis zu den zu kopirenden Zellen
Es werden vier Zellen kopiert.
Die Daten Datei wird geöffnent
In der Entsprechenden Mappe geht es solange runter bis ans Ende der Liste
Dann soll der Inhalt eingefügt werden. Und genau das klappt nicht!
"dispatcher.executeDispatch(Sheet, ".uno:InsertContents", "", 0, args11())"
wenn ich "Sheet" durch "document" ersetze ist, wird der Inhalt in der Eingabemaske eingefügt. So kommt es zur Fehlermeldung.
IIS_Daten wird gespeichert und wieder geschlossen.
[code]REM ***** BASIC *****
Sub Main
dim Halb as string
Halb = "Neues Halbzeug abspeichern"
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 args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = "$A$1"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())
rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "By"
args3(0).Value = 1
args3(0).Name = "Sel"
args3(0).Value = false
rem ----------------------------------------------------------------------
PosZeile = 0
oDoc = thisComponent
mySheet = oDoc.Sheets().getByName("IIS")
Do Until mySheet.getcellbyPosition(0,PosZeile).string = Halb
dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args3())
Poszeile = Poszeile + 1
loop
rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "By"
args4(0).Value = 1
args4(0).Name = "Sel"
args4(0).Value = false
dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args4())
rem ab hier
rem ----------------------------------------------------------------------
dim args5(1) as new com.sun.star.beans.PropertyValue
args5(0).Name = "By"
args5(0).Value = 1
args5(1).Name = "Sel"
args5(1).Value = true
dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args5())
rem ----------------------------------------------------------------------
dim args6(1) as new com.sun.star.beans.PropertyValue
args6(0).Name = "By"
args6(0).Value = 1
args6(1).Name = "Sel"
args6(1).Value = true
dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args6())
rem ----------------------------------------------------------------------
dim args7(1) as new com.sun.star.beans.PropertyValue
args7(0).Name = "By"
args7(0).Value = 1
args7(1).Name = "Sel"
args7(1).Value = true
dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args7())
rem ----------------------------------------------------------------------
dim args8(1) as new com.sun.star.beans.PropertyValue
args8(0).Name = "By"
args8(0).Value = 1
args8(1).Name = "Sel"
args8(1).Value = true
dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args8())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
rem ----------------------------------------------------------------------
dim args11(5) as new com.sun.star.beans.PropertyValue
args11(0).Name = "Flags"
args11(0).Value = "SVDT"
args11(1).Name = "FormulaCommand"
args11(1).Value = 0
args11(2).Name = "SkipEmptyCells"
args11(2).Value = false
args11(3).Name = "Transpose"
args11(3).Value = false
args11(4).Name = "AsLink"
args11(4).Value = false
args11(5).Name = "MoveMode"
args11(5).Value = 4
rem ----------------------------------------------------------------------
Dim Pfad as String
Dim Dummy()
Dim Url as String
Dim Calc as Object
Dim Sheet as Object
Dim Zelle as Object
Pfad = "file:///C:/IIS/IIS_Daten.ods"
Url = ConvertToUrl(Pfad)
Calc = StarDesktop.loadComponentFromUrl(Url, "_blank",0,Dummy())
Sheet = Calc.sheets("IIS HALBZEUG")
rem hier geht es in Halbzeug runter
Poszeile2 = 1
rem #oDoc2 = thisComponent
rem #mySheet2 = oDoc2.Sheets().getByName("IIS HALBZEUG")
Do Until Sheet.getcellbyPosition(0,Poszeile2).value = "0"
dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args3())
Poszeile2 = Poszeile2 + 1
loop
rem dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args3())
Zelle = Sheet.getCellbyPosition(0,Poszeile2)
dispatcher.executeDispatch(Sheet, ".uno:InsertContents", "", 0, args11())
rem Zelle.String = "Test hat geklappt"
rem #dispatcher.executeDispatch(oDoc2, ".uno:InsertContents", "", 0, args11())
If (Calc.isModified) then ' Calc-Doku speichern, wenn geändert
Calc.store()
End if
Calc.close(0)
End Sub[/code]
Über Hilfe würde ich mich sehr freuen ...
Mit freundlichen Grüßen
Thomas