Я пытаюсь открыть файл Excel (xlsm) через VBA. Он может быть защищен или не защищен (известным) паролем. Я использую этот код:
On Error Resume Next
Workbooks.Open filename, Password:=user_entered_pw
opened = (Err.Number=0)
On Error Goto 0
Теперь это работает нормально, если в книге есть пароль. Но если он не защищен, его нельзя открыть. По-видимому, это ошибка в XL2007, если также включена активная защита структуры книги. (http://vbaadventures.blogspot.com/2009/01/possible-error-in-excel-2007.html). На старом XL2003, если ввести пароль, откроется как незащищенный, так и защищенный паролем файл.
Я пытался:
Workbooks.Open filename, Password:=user_entered_pw
If (Err.Number <> 0) Then workbooks.open filename
Это работает для незащищенных и защищенных файлов. Однако, если пользователь вводит неправильный пароль, он запускается во второй строке и вызывает запрос «введите пароль», который мне не нужен.
Как обойти это?