No promises, but this seems to work.
Sub UnprotectThemAll()
Dim WB As Workbook
For Each WB In Application.Workbooks
If Not WB.Name = ThisWorkbook.Name Then Call UnprotectVBProj(WB, "mypassword")
Next WB
End Sub
Sub UnprotectVBProj(ByRef WB As Workbook, ByVal Pwd As String)
Dim vbProj As Object
Dim OpenWindow As Object ' As VBIDE.Window
For Each OpenWindow In Application.VBE.VBProjects.VBE.Windows
If InStr(1, OpenWindow.Caption, "(Code)") > 0 Then OpenWindow.Close
Next
DoEvents
Set vbProj = WB.VBProject
If vbProj.Protection <> 1 Then Exit Sub ' already unprotected
Set Application.VBE.ActiveVBProject = vbProj
DoEvents
SendKeys Pwd & "~~"
Application.VBE.CommandBars(1).FindControl(ID:=2578, recursive:=True).Execute
End Sub
Hope that helps,
MArk