View Single Post
  #1   Report Post  
Posted to microsoft.public.excel.programming
Ron de Bruin Ron de Bruin is offline
external usenet poster
 
Posts: 11,123
Default Programming to VBE

Hi Ajit

Only with Sendkeys it is possible

Read this 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:=257 8,
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:=257 8,
recursive:=True).Execute

WB.Save
End Sub




--
Regards Ron de Bruin
http://www.rondebruin.nl


"Ajit" wrote in message ...
I am working on a situation where there are couple of hundred excel templates
with forms , modules etc. And i need to make a global change in the code to
one of the procedure. I found some valuable information at www.cpearson.com
which helped me pragramme to the Visual basic editor.

What i am doing is : I am opening the required template, finding the
procedure which needs to be replaced , deleting that procedure and adding a
new procedure with same name but different code.

All works well....except when VBE project is protected.

Could someone suggest a wayout to unprotect the project at runtime ...make
the required changes and then again protect the project before saving it.

Suggestions will be highly appreciated.

Thanks
--
Ajit