Excel crashes if project is not compiled (urgent help please!)

J

Jos Vens

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
 
G

Guest

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.
 
J

Jos Vens

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
 
J

Jos Vens

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
 
G

Guest

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top