I am trying to open an Excel (xlsm) file via VBA. It may or may not be protected with a (known) password. I am using this code:
On Error Resume Next
Workbook
For the record - the reason was indeed the structure protection of the workbook I was opening. I could circumvent the problem by disabling structure protection, and re-protecting in Workbook_Open() (in the protected workbook).
With structure protection inactive, Workbooks.Open
with password does not fail even when there is no password.
Since I am opening via a VBA method, the VBA code is already trusted, meaning the Workbook_Open method will surely be called.
Use 1004 error handling exclusively for this particular problem, and On Error Resume Next for everything else in the Sub.
Above the statement Workbooks.Open filename, Password:=user_entered_pw
also add another line statement without a password argument.
If those (or their combination) don't work, try scouring the .xlsm flat code in Notepad for any hint that a PW protected file differs at that level from one without. Use that info in a pre-opening function.