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

Programmaticlly sign and password protect a VBA Project in Excel 2

679 views
Skip to first unread message

RoccoCoetzee

unread,
Jul 16, 2009, 11:13:02 AM7/16/09
to
Hi

I have a workbook that has a vba project attached which is signed and
password protected.

In this workbook I've created a sub that creates a new workbook (by moving a
worksheet to a new workbook) adds code to its "ThisWorkBook" module
(basically to unprotect, process data and protect the worksheet when a user
makes changes to a specific range).Thus this code contains passwords to
protect and unprotect a worksheet which I don't want any of my users to view
if they open the VBA editor.

I need to be able to programmatically password protect the newly created
workbook's vba project and add the original workbook's signature to it to
enable macro functionality on it.

Could someone please advise on how I go about this as I am baffled.

--
Rocco Coetzee

Dave Peterson

unread,
Jul 16, 2009, 1:37:17 PM7/16/09
to
Excel doesn't give developers this feature--if it did, then any workbook's
project could be easily cracked.

If your code is really in the ThisWorkbook module, then I'd create a template
file with that code already in it. And that workbook's project would be
protected.

Then instead of creating a new workbook with:

set newwkbk = workbooks.add(1)
or
worksheets("somesheet").copy 'to a new workbook

I'd use:
set newwkbk = workbooks.add(Template:="C:\yourpath\yourtemplatefile.xlt")
worksheets("somesheet").copy _
after:=newwkbk.worksheets(1)
application.displayalerts = false
newwkbk.worksheets("DeleteMeLater").delete
application.displayalerts = true

(Yes, DeleteMeLater is a dummy sheet in that template workbook.)

--

Dave Peterson

RoccoCoetzee

unread,
Jul 17, 2009, 3:29:01 AM7/17/09
to
Dave thank you for responding.

I think your solution would definitely resolve my problem.

Thank you again.

Just to satisfy my curiosity... I have stumbled on to some code someone has
written that can actually unlock vba project code programmatically (JB
VBAProject Unlocker v1.07.xls).

He is using kernel32.dll and users32.dll alias "SendMessageA".
His code looks extremely complicated but it seems he is capturing the
password dialog box with a window handle "hWnd" and entering a password which
the calling sub supplies.

Would it then also be possible to capture the vba project's "Project
Properties dialog box" with a window handle then enter Password and enter
Confirm Password in the same manner?

--
Rocco Coetzee

Dave Peterson

unread,
Jul 17, 2009, 8:02:31 AM7/17/09
to
I wouldn't be surprised if that code used Sendkeys. That means that everything
must go right for it to work. If the wrong window has focus, then the sendkeys
may do something to that application--and not touch what you want at all.

I wouldn't trust Sendkeys in any application that I wasn't watching closely each
time I used it.

--

Dave Peterson

RoccoCoetzee

unread,
Jul 17, 2009, 8:15:01 AM7/17/09
to
I'll take your word for it.

I have done what you sugested and works like a dream.

Thanks Dave.

Cheers

unread,
Aug 14, 2009, 12:53:03 PM8/14/09
to
Hi,
Yes. It can be done. I have written a VBA program. All you need is to input
<Filename>, <Path> and <Password> for the file via VBA. You may edit anything
in the hidden mode via VBA, then save it wihout user have a chance to view
what is going on.

Email to:
tt...@yahoo.com
for more details.

Cheers

Cheers

unread,
Aug 14, 2009, 1:00:06 PM8/14/09
to
Hi,
Yes. You can Protect & Unprotect Any Excel Sheet via VBA provided you have
set the correct password in VBA. Users who use your Macro will not have a
chance to edit your protected excel file if you are able to control the VBA
well. User will not be asked to input the password.

I have written a VBA program. All you need is to input <Filename>, <Path>
and <Password> for the file via VBA. You may edit anything in the hidden mode
via VBA, then save it wihout user have a chance to view what is going on.

Email to:
tt...@yahoo.com
for more details.

Cheers

0 new messages