VBA excel - 有什麼方法可以確保使用者無法在立即視窗中呼叫/運行巨集?

VBA excel - 有什麼方法可以確保使用者無法在立即視窗中呼叫/運行巨集?

所以我寫了一個VBA應用程式並鎖定了VBAProject(無法查看)。但當然,用戶仍然可以訪問立即視窗(例如,如果他們打開另一個 Excel 文件並單擊我的 VBAProject,即使已鎖定)。儘管我的 VBAProject 被鎖定且無法查看,但打開另一個 Excel 的用戶可以訪問我的即時視窗並嘗試運行我的巨集或輸入一些程式碼來運行。當然,他們不知道我如何命名宏,但可能可以運行程式碼來獲取名稱列表(過程名稱)。那麼 - 可以阻止使用者在我的 VBAProject 即時視窗中執行任何程式碼或呼叫任何巨集嗎?

答案1

簡短的回答:使用Private關鍵字。

更長的答案:保護原始碼的唯一方法就是永遠不會發布它。

長答案:可以建立一個主動阻止對 VBA 編輯器存取的 VBA 專案;但這是不道德的,它不會像專案密碼那樣保護您的原始程式碼。

考慮一個古老的Workbook.Close惡作劇,打開工作簿後立即關閉它。使用者所需要做的就是停用巨集並重新開啟工作簿。這同樣適用於用 VBA 編寫的任何內容。如果您依靠 VBA 來執行安全性操作,那麼當巨集被停用時,您的安全性就會結束。

將其與使用項目密碼所獲得的安全性進行比較。當然,破解密碼對大多數開發人員來說是微不足道的,但它需要更多的努力,並且會阻止大多數臨時使用者。重要的是,它可以讓您和您的軟體處於受尊重的一方。

有一個關於使用外部工具代替 VBA 或與 VBA 結合使用的對話,但這比您提出的問題要複雜得多。如果它們的行為像您建議的那樣,這也符合術語惡意軟體的任何定義。

相關內容