簡體   English   中英

使用VBA從第一個密碼保護第二個工作簿的宏

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

我有一個工作簿,它創建了第二個工作簿(使用ThisWorkbook.SaveCopyAs )以很好地向用戶展示數據。 它依賴宏進行部分處理。

但是,有人要求我使用戶無法訪問這些宏。 他們仍然需要運行它們,但是要查看/編輯它們,則需要輸入密碼。 我可以弄清楚如何使用GUI(VBA編輯器->右鍵單擊VBAProject-> VBAProject屬性->保護,在框內打勾並輸入密碼),但是我還沒有找到使用VBA的方法。 Workbook.Protect函數似乎可以鎖定 VBA 以外的所有內容。

如果我嘗試將其應用於源工作簿,則會收到“由於項目受保護而無法執行操作”,因此也不起作用。

我正在運行2010,但是該工作簿需要與2003兼容,因此沒有新奇的花樣。 :(

此方法描述了不使用sendkey http://www.standards.com/Office/SetVBAProjectPassword.html設置項目密碼的方法

我有一個類似的問題。 我需要Excel代碼來填充用戶創建的新工作表,但是我想用密碼保護該項目。 只要我不使用密碼保護,它就可以很好地工作,但是Excel不允許它在具有密碼保護的新工作表中生成代碼。

解決方案很有趣。 給您的項目起一個簡單的名字或縮寫。 人們可以輕松找到一些東西。

您可以用密碼保護整個項目,並將結果文件另存為XLA(附加)。

然后取消保護工作簿,重命名文件(以防萬一您犯錯了),並剝離所有代碼,模塊,類,窗體等。保存新的剝離的Excel文件。

現在打開新的剝離文件,並在工具/附加組件中添加xla。 然后轉到VBA編輯器“參考”,並使用新名稱查找項目並進行鏈接(您可能必須保存並重新打開一次才能在“參考”下查找)。

而已。 新文件(不含所有代碼)將使用舊代碼運行,但是如果沒有密碼,您將無法訪問它。 同時,由於新工作簿項目沒有密碼保護,因此舊代碼可以像以前一樣將代碼放置在新工作表上

我發現,如果您更改位置,您的用戶可能需要在引用中找到鏈接,但是我確信您可以創建一個宏來自動查找和鏈接(當然,該宏對世界是可見的)。 )。

我認為這可以解決受保護代碼的任何問題。

祝好運

這篇文章可能對您有幫助。 請注意,在注釋中說您需要添加vbeext1.olb

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM