nach zwei Stunden mühsamen Debugging bin ich immer noch nicht auf eine Lösung gekommen. Es geht um eine Funktion, die ich geschrieben habe, die ein Passwort auf ein VBA Projekt einer bestimmten Arbeitsmappe fügt.
Das Ganze sieht so aus:
Function setVBAProjectPassword(ByVal WB As Variant, PW As String) As Boolean
Set Application.VBE.ActiveVBProject = WB.VBProject
Application.VBE.CommandBars.FindControl(ID:=2578).Execute
SendKeys "^{PGDN}"
SendKeys "%a"
SendKeys "k"
SendKeys PW
SendKeys "{Tab}"
SendKeys PW
SendKeys "{Enter}"
setVBAProjectPassword = WB.VBProject.Protection
Debug.Print setVBAProjectPassword
'End
End Function
Zum Test der Funktion nutze ich folgende Methode:
Sub Test()
Dim wbExt As Variant
Set wbExt = Workbooks.Open("D:\test.xlsm")
setVBAProjectPassword wbExt, "a"
End Sub
Das kuriose an der ganzen Sache ist, dass wenn ich in der Funktion am ende "End" schreibe, also alle Makroaktivitäten beende, funktioniert es. Die test.xlsm bekommt ein VBA Passwort. Wenn ich das End weglasse, macht er den Passwortschutz auf meine aktuelle Arbeitsmappe (ThisWorkbook).Hat irgendjemand eine Idee was da los ist?!!
Danke :-/