Well, actually you can unprotect a VBA project with code, assuming you know the password (and still possible if you don't with some password cracking software out there). However, since you are the workbook author and you know the password, the code below isn't morally illegal.
This uses the dreaded and hated SendKeys method to simulate the actions of going to the VBE, then to the Project Explorer window, then selecting the Project name, and unrpotecting it. I placed some notes in front of the significant code lines.
One other note on something that looks excessive is all the Tab lines, which is one trick to this code you will also need to know - - that being, where in the PE your project exists. The quantity of Tab lines is variable depending on your add-in and current project task situation.
This is run from a separate workbook, targeting whatever workbook you want to open and unprotect the VBE for. After that you can do whatever you want to do in the workbook code-wise, and when you close it with a line like
Workbooks("YourFileName.xls").Close True
Upon close, the VBE will reprotect itself as usual, meaning YourFileName.xls will be locked the next time it opens.
The code which worked on Excel 2002 (and should work on Excel 2K but not guaranteed for 97 or before) is:
Sub TestUnprotectProject()
Workbooks.Open "C:\Your\File\Path\YourFileName.xls"
With Application
'Go to the VBE
.SendKeys "%{F11}", True
'Activate Project Explorer window
.SendKeys "^r", True
'Tab your way to the workbook project
'Note - - when I tested this, it was in a separate workbook,
'following 6 add-in projects.
'"YourFileName" was the 8th project in my PE window,
'so 9 tab hits were required.
'You could also down-arrow using .SendKeys "{DOWN}", True
.SendKeys "{TAB}", True
.SendKeys "{TAB}", True
.SendKeys "{TAB}", True
.SendKeys "{TAB}", True
.SendKeys "{TAB}", True
.SendKeys "{TAB}", True
.SendKeys "{TAB}", True
.SendKeys "{TAB}", True
.SendKeys "{TAB}", True
'Simulate the Enter key
.SendKeys "~", True
'Enter your password - - this example is "Password"
.SendKeys "Password"
'Enter again
.SendKeys "~", True
End With
End Sub