Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Protect\Unprotect VBA project

507 views
Skip to first unread message

Rohit Thomas

unread,
Aug 28, 2003, 11:06:06 AM8/28/03
to
Hello All,

Is it possible to protect\unprotect a VBA project using
code in Excel 97 or above? I am looking for similar
functionality as protecting\unprotecting a
worksheet\workbook.

Thanks,
Rohit Thomas

Chip Pearson

unread,
Aug 28, 2003, 11:08:40 AM8/28/03
to
Rohit,

Other than using SendKeys, you cannot protect/unprotect a VBProject using
code.

--
Cordially,
Chip Pearson
Microsoft MVP - Excel
www.cpearson.com ch...@cpearson.com

"Rohit Thomas" <rohit...@comcast.net> wrote in message
news:00bf01c36d75$e7edfa00$a101...@phx.gbl...

Ron de Bruin

unread,
Aug 28, 2003, 11:16:08 AM8/28/03
to
Here is a example with unreliable Sendkeys


Old post from Bill Manville

------------------------
You will need to use SendKeys to unprotect the project(s) and reprotect
after replacing the modules.

Here's something to get you started:

Sub TestProtect()
Workbooks.Add.SaveAs "C:\Temp\Book1.xls"
ProtectVBProject Workbooks("Book1.xls"), "Jack"
Workbooks("Book1.xls").Close True
End Sub

Sub TestUnprotect()
Workbooks.Open "C:\Temp\Book1.xls"
UnprotectVBProject Workbooks("Book1.xls"), "Jack"
End Sub

Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
Dim vbProj As Object

Set vbProj = WB.VBProject

'can't do it if already unlocked!
If vbProj.Protection <> 1 Then Exit Sub

Set Application.VBE.ActiveVBProject = vbProj

' now use lovely SendKeys to quote the project password
SendKeys Password & "~~"
Application.VBE.CommandBars(1).FindControl(Id:=2578,
recursive:=True).Execute
End Sub

Sub ProtectVBProject(WB As Workbook, ByVal Password As String)
Dim vbProj As Object

Set vbProj = WB.VBProject

'can't do it if already locked!
If vbProj.Protection = 1 Then Exit Sub

Set Application.VBE.ActiveVBProject = vbProj

' now use lovely SendKeys to set the project password
SendKeys "+{TAB}{RIGHT}%V{+}{TAB}" & Password & "{TAB}" & _
Password & "~"

Application.VBE.CommandBars(1).FindControl(Id:=2578,
recursive:=True).Execute

WB.Save
End Sub


Bill Manville
MVP - Microsoft Excel, Oxford, England
No email replies please - reply in newsgroup


--
Regards Ron de Bruin
(Win XP Pro SP-1 XL2002 SP-2)
www.rondebruin.nl

"Chip Pearson" <ch...@cpearson.com> wrote in message news:ubdWGZXb...@TK2MSFTNGP10.phx.gbl...

0 new messages