2013-05-26 59 views
11

我已經把一個簡單的Excel數據庫放在一起,執行一些宏功能,我需要將這個數據庫分發給幾個人 - 但他們無法看到宏功能是如何工作的(我必須遵循的愚蠢規則!)。達到此目的的最佳方法是什麼?保護Excel VBA代碼的最佳方法?

我已經做了一些研究,我發現有兩種方式:

  • 密碼保護VBA項目;但是這顯然很容易在網上使用現成的工具來打破(這對於我發送這些信息的人來說是最有利的,以瞭解宏和函數是如何工作的;所以我幾乎100%肯定他們會嘗試進入它..所以密碼保護問題顯得不足

  • 移動到C++等完全編譯的語言。我的技能是非常有限的,以VBA在Excel和Access所以這是理想的解決方案,是不是對於我一個解決方案:(

是否有其他方法嗎?我想有的「主excel文件」,在所有的宏,然後發送「孩子」數據庫TH e最終用戶並將「兒童」數據庫連接到「主」 - 是否可能這樣?通過在線託管主數據庫,甚至將最終用戶發送給主數據庫,但除非通過「兒童」數據庫訪問,否則完全無法訪問數據庫?

+0

檢查VSTO以創建加載項,然後使用ClickOnce來部署它們 –

+1

檢出http://hivelink.io,它允許你創建一個沒有計算的用戶界面電子表格,並且可以輕鬆地定義輸入/輸出來將它們與你的數據庫連接起來進行驗證等。我在這裏寫了一篇廣泛的文章:http://stackoverflow.com/questions/16363621/protecting- code-in-a-excel-workbook/28968867#28968867 – stuzor

回答

4

您可以創建自動化添加。

自動化外接提供了幾個優點

  • 執行速度:自動化外接在寫在VB6被編譯到它運行比解釋VBA 的語快得多 本機代碼。

  • 安全:與XLA插件不同,您絕不會將源代碼分發給最終用戶。如果您的代碼擁有專有信息或知識產權價值,那麼您的計算機仍可以安全地保護您的代碼。它永遠不會分發給用戶。你的代碼可以不會受到威脅。

http://www.cpearson.com/excel/automationaddins.aspx

+5

vb6已過時。我會推薦VSTO :) –

+0

兼容性問題呢?我現在正在閱讀VSTO的文檔,但如果你有一個快速的答案,那將是非常棒的。 - VSTO插件是否支持舊版本的Office? - 它是否支持Office/Open Office的MAC版本? – Chronix3

+1

@ Chronix3我建議自動化添加在bcoz中,語法類似於VBA,可以更快地完成。試一試。儘管VB6已經過時,但它仍然有效。 – Santosh