Hi,
I wonder if it is possible to compile my project on startup.
The problem is, I protect my project with a password. If I switch from
Office XP to Office 2003, it crashes. The reason is, it only works if it is
compiled on the same excel version.
If I compile my project on XP, it works on XP. If I open the project on 2003
(without macro's enabled), I can see the Compile Project is Black (not
greyed out), so if I compile it on 2003, save it and close it, it works on
2003!
I tried with sendkeys to open the code, but I cannot accomplish to send the
password.
Can anyone help (is there a command in VBA that enforce a compilation on
startup?). I found this command vWB.VBProject.MakeCompiledFile but it does
not seem to work.
Thanks!
Jos Vens
Tom Ogilvy - 20 Mar 2006 20:40 GMT
Compile code with code in VBE
Sub Compile()
Dim WB As Workbook
Set WB = Workbooks("Book1.xls")
With Application.VBE
.VBProjects(WB.VBProject.Name).VBComponents(1) _
.CodeModule.CodePane.Window.Visible = True
With .CommandBars.FindControl(Id:=578)
If .Enabled = True Then .Execute
End With
End With
End Sub
I don't think this will work if the project is protected, because you
couldn't make the code pane visible.

Signature
Regards,
Tom Ogilvy
> Hi,
>
[quoted text clipped - 18 lines]
> Thanks!
> Jos Vens
Jos Vens - 20 Mar 2006 20:52 GMT
Thanks Tom,
but it is right: it only works if I don't protect it!
Is there a way to unprotect it procedurally? Can I provide the password with
sendkeys? For me, Excel blocks the input (procedure that is running) when
the dialog is asking the password so sendkeys does not make sense.
Jos
> Compile code with code in VBE
>
[quoted text clipped - 40 lines]
>> Thanks!
>> Jos Vens
Jos Vens - 20 Mar 2006 21:15 GMT
Hi Tom,
this code works! I provide a password but don't put the checkbox on (so I
can see the codepane. After compiling, I set the checkbox, save and close.
If I could now accomplish to open the project in the same manner, I get what
I want. What keys should I sent to let appear the password dialog for the
project of a xla-file of the list (if it is not the first in the list).
Thanks
Jos
Function COMPILE_Psw()
Dim vWB As Workbook
Set vWB = Workbooks("Psw.xla")
Application.VBE.VBProjects(vWB.VBProject.Name).VBComponents(1).CodeModule.CodePane.Window.Visible
= True
If Application.VBE.CommandBars.FindControl(ID:=578).Enabled = True Then
Application.VBE.CommandBars.FindControl(ID:=578).Execute
End If
Application.SendKeys "%xe+{TAB}{RIGHT}{TAB}v{TAB}{TAB}{TAB}~"
vWB.Save
vWB.Close
End Function
> Thanks Tom,
>
[quoted text clipped - 49 lines]
>>> Thanks!
>>> Jos Vens
Tom Ogilvy - 20 Mar 2006 21:43 GMT
I don't know. but, some others have posted code for sendkeys to send the
password to the VBE project. Search this group in http://groups.google.com
It seems if you have to do all this and it isn't really supported, that you
shouldn't need to - that you have a more systemic problem

Signature
Regards,
Tom Ogilvy
> Hi Tom,
>
[quoted text clipped - 79 lines]
> >>> Thanks!
> >>> Jos Vens