How to make opening of workbook conditional of opening of another workbook

T

turk5555

I have a main workbook named Homebase that has a password form. The
correct password must be entered to open the Homebase workbook.
Homebase has hyperlinks to module workbooks which have different names
(P&L Module, Cash Flow Module, etc.)

I want to make sure that users cannot open module workbooks unless the
Homebase workbook is already open.
If someone tried to do this a message box would appear that displays
the mesage: "Sorry, but you can only access this module through
Homebase." The module workbook would NOT open and Excel would be blank
when the user closes the message box.

Would appreciate any help with the VBA code that I would write in each
module workbook to do the above.
 
K

Keith

Just off the top of my head I can think of two ways, but
neither are 100% secure, it depends on what level of
protection you want. One would be hide all worksheets in
the module in xlveryhidden mode. Then on the workbook
open event have it look to see if workbook (whatever you
name the main book) is open if so unhide sheets, if not
close workbook. This would mean the main workbook would
always have to keep the same name. (or user could just
name a workbook that name and trick it) The other would
be to write to a hidden text file when it is open and
then when it closes delete the file. Then the other
workbook look for that when it opens. neither way is
perfect but they can be modified to suit your needs.

Keith
www.kjtfs.com
 
T

turk5555

Would you happen to know what the VBA code would be and where I would
place it?

I used the following code and cannot get it to work:

Sub Workbook_Open()

If Workbooks.Open("Home") = False Then

ThisWorkbook.Close

End If

End Sub

I placed the above code in ThisWorkbook.
 

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