Password-protect the macros of a second workbook from a first using VBA

岁酱吖の 提交于 2019-12-24 00:14:00

问题


I have a workbook, which creates a second workbook (using ThisWorkbook.SaveCopyAs) to present the data nicely to users. It relies on macros for part of the processing.

However, I've been asked to make those macros inaccessible to users. They still need to run them, but to view/edit them should require a password. I can figure out how to do it using the GUI (VBA Editor -> right click VBAProject -> VBAProject Properties -> Protection, tick the box and enter a password), but I haven't found a way to do so using VBA. The Workbook.Protect function seems to lock down everything except VBA.

If I try to apply it to the source workbook, I get "Can't perform operation since the project is protected", so that doesn't work either.

I'm running 2010, but the workbook needs to be compatible with 2003, so no fancy new tricks. :(


回答1:


This is a method that describes setting the project password without using sendkeys http://www.standards.com/Office/SetVBAProjectPassword.html




回答2:


This post may be helpful to you. Note that in the comments it says you need to add vbeext1.olb.




回答3:


I had a similar problem. I needed excel code to populate user created new sheets, but I wanted to password protect the project. It would work great as long as I did not use password proection, but Excel will not allow it to generate code in the new sheets with password protection.

The solution was interesting. Give your project an easy name or initials . Something people can find with ease.

You password protect your entire project and save the resulting file as an XLA (add on).

Then UNprotect the workbook, rename the file (just in case you make a mistake) and strip it of all the code, modules, classes, forms, etc. Save the new stripped Excel File.

Now open the new stripped file and add the xla in TOOLS/add ons. Then go to the VBA editor, References and find your project wiht a new name, and link (you may have to save and reopen once to find under referneces).

That's it. the new file, empty of all code, will operate using the old code but you will have no access to it without a password. At the same time, the old code can place the code on the new worksheets as before since the new workbook Project is not password protected

What I have found is that if you change locations, your users may need to find the link in the references, but I am sure you can create a macro to find and link automatically (that macro, of course, would be visible to the world).

I think this will solve any problem with protected code.

Good luck



来源:https://stackoverflow.com/questions/5799665/password-protect-the-macros-of-a-second-workbook-from-a-first-using-vba

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!