von cldi » Do, 09.11.2006 18:32
Hallo,
ich muss eine Stundenabrechnung, die auf Excel Makros aufbaut an Open Office anpassen.
Leider bin ich auf einige Probleme gestossen (abgesehen davon, dass die kompletten Makros umgeschrieben werden müssen

).
Ein Problem habe ich mit den ComboBoxen (die z.B. erst am OpenOffice 2.0 funktionieren)
Zum Herausfinden, wie Basic funktioniert habe ich das Makro aufzeichnen wollen.
In der Combobox gibt es verschiedene Auswahlmöglichkeiten z.B. U für Urlaub. Wenn U gewählt werden, soll in die Zeit Spalte 8:00 (Stunden) eingetragen werden und diese in die Spalte WAKUR übernommen werden.
Beim Aufzeichnen hat alles funktioniert, bis auf das U zu übernehmen. Es kam meines Erachten auch nicht im Aufgezeichneten Makro vor. Kann es sein, dass Basic nichts mit ComboBoxen anfangen kann?
Code: Alles auswählen
sub UrlaubUebertragen
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 = "$E$11"
rem "$E$11" entspricht Spalte Zeit
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "StringName"
args2(0).Value = "8:00"
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args2())
rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "ToPoint"
args3(0).Value = "$K$11"
rem "$E$11" entspricht Spalte Zeit WAKUR
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3())
rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "StringName"
args4(0).Value = "=E11"
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args4())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())
end sub
Folglich würde ich daraus schliessen, dass sich des so wie ich es in VBA umgesetz habe nicht möglich ist? Stimmt das?
Code: Alles auswählen
Sub UrlaubKrank()
Dim x As Integer
Dim y As Integer
For x = 4 To 34
If (UCase(Cells(x, 7).Value) = "U") Then Cells(x, 11).Formula = "8:00:00"
Next x
For x = 4 To 34
If (UCase(Cells(x, 7).Value) = "U") Then Cells(x, 5).Formula = "8:00:00"
Next x
For x = 4 To 34
If (UCase(Cells(x, 7).Value) = "U") Then Cells(x, 6).Formula = "Urlaub"
Next x
End Sub
Bin für jeden Lösungsvorschlag dankbar, den eigentlich sollte der "Komfort" durch die Umstellung nicht darunter leiden.
Vielen Dank im Voraus
cldi
Hallo,
ich muss eine Stundenabrechnung, die auf Excel Makros aufbaut an Open Office anpassen.
Leider bin ich auf einige Probleme gestossen (abgesehen davon, dass die kompletten Makros umgeschrieben werden müssen :roll: ).
Ein Problem habe ich mit den ComboBoxen (die z.B. erst am OpenOffice 2.0 funktionieren)
Zum Herausfinden, wie Basic funktioniert habe ich das Makro aufzeichnen wollen.
In der Combobox gibt es verschiedene Auswahlmöglichkeiten z.B. U für Urlaub. Wenn U gewählt werden, soll in die Zeit Spalte 8:00 (Stunden) eingetragen werden und diese in die Spalte WAKUR übernommen werden.
Beim Aufzeichnen hat alles funktioniert, bis auf das U zu übernehmen. Es kam meines Erachten auch nicht im Aufgezeichneten Makro vor. Kann es sein, dass Basic nichts mit ComboBoxen anfangen kann?
[code]sub UrlaubUebertragen
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 = "$E$11"
rem "$E$11" entspricht Spalte Zeit
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "StringName"
args2(0).Value = "8:00"
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args2())
rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "ToPoint"
args3(0).Value = "$K$11"
rem "$E$11" entspricht Spalte Zeit WAKUR
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3())
rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "StringName"
args4(0).Value = "=E11"
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args4())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())
end sub[/code]
Folglich würde ich daraus schliessen, dass sich des so wie ich es in VBA umgesetz habe nicht möglich ist? Stimmt das?
[code]Sub UrlaubKrank()
Dim x As Integer
Dim y As Integer
For x = 4 To 34
If (UCase(Cells(x, 7).Value) = "U") Then Cells(x, 11).Formula = "8:00:00"
Next x
For x = 4 To 34
If (UCase(Cells(x, 7).Value) = "U") Then Cells(x, 5).Formula = "8:00:00"
Next x
For x = 4 To 34
If (UCase(Cells(x, 7).Value) = "U") Then Cells(x, 6).Formula = "Urlaub"
Next x
End Sub
[/code]
Bin für jeden Lösungsvorschlag dankbar, den eigentlich sollte der "Komfort" durch die Umstellung nicht darunter leiden.
Vielen Dank im Voraus
cldi