Seite 1 von 1

Fehlermeldung beim ersten Ausführen eines Makros

Verfasst: Mo, 18.01.2010 10:00
von Tictac
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

Re: Fehlermeldung beim ersten Ausführen eines Makros

Verfasst: Di, 19.01.2010 14:52
von Charly
Hallo TicTac!

Das von dir beschriebene Verhalten könnte daraufhinweisen, dass zum Zeitpunkt des 1. Laufes die Standardbibliothek noch nicht geladen ist. Der erste Versuch lädt die Bibliothek und sie steht deshalb beim zweiten Versuch zur Verfügung.
Ich schlage vor du fügst folgenden Befehl in dein Makro ein.

Code: Alles auswählen

DialogLibraries.loadLibrary("Standard") 
Gruß
Charly

Re: Fehlermeldung beim ersten Ausführen eines Makros

Verfasst: Do, 21.01.2010 14:04
von Tictac
Danke für den Hinweiß, genau das war der Fehler

Hätte ich auch selber drauf kommen können