Hallo Alle zusammen
Ich arbeite gerade an einigen Makros. Leider stehe ich nun vor einem Problem, dass ich nicht so ganz begreife.
Ich starte mein Makro über einen Button.
Dann soll ein Dialog geöffnet werden, in dem ich ein Passwort eingebe.
Funktioniert eigentlich ganz gut.
Nur das ich wenn ich das Dokument speichere und danach wieder öffne beim ersten Versuch jedes mal die Fehlermeldung
"Action not supported. Invalid procedure call."
bekomme. Bestätige ich diese Meldung und starte das Makro nocheinmal, dann läuft alles einwandfrei durch. Gleiches erreiche ich, wenn ich das Makro nicht über den Button starte, sondern über das Menü "Makro". Auch bekomme ich diese Fehlermeldung nicht, wenn ich das Makro zum editieren öffne, danach wieder schließe und dann über den Button starte.
Konkret zeigt er bei der Fehlermeldung auf folgende Zeile
Code: Alles auswählen
oDialog = createUnoDialog(DialogLibraries.Standard.LockDialog)
Mein Komplettes Makro sieht folgendermaßen aus.
Die Main verweißt auf die gleiche Sub, wie der Button auf den ich klicke
Code: Alles auswählen
private oDialog as Object
Sub Main
btnProtect()
End Sub
sub btnProtect
oDialog = createUnoDialog(DialogLibraries.Standard.LockDialog)
oDialog.execute()
end sub
sub btnOK
secure(false)
end Sub
sub btnCancel
oDialog.endExecute()
end Sub
sub btnOkPw
secure(true)
end Sub
sub secure (show AS BOOLEAN)
Dim i as INTEGER
i=0
oTextfield = oDialog.getControl("Passwort")
Do
write1()
protectneu(oTextfield.getText())
NextPage.NextPage()
i=i+1
Loop Until ThisComponent.getCurrentController.getActiveSheet.getName() = "Vorlage"
Jump0.JumpScope()
ThisComponent.protect(oTextfield.getText())
oDialog.endExecute()
if show THEN
msgbox oTextfield.getText()
End IF
end Sub
sub protectneu(pw as String)
osheet = thisComponent.Currentcontroller.activeSheet
oSheet.protect(pw)
end Sub
sub write1
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$1"
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 = "1"
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args2())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())
end sub