iT邦幫忙

0

[Excel] 要如何保護 Excel 函數運算式?

kupin 2010-01-23 12:36:4624160 瀏覽
  • 分享至 

  • xImage

最近利用 Excel 設計了一個標地物的毛利試算檔案,想提供給員工使用,但此有關公司之智慧財產,如用一般密碼保護,怕員工離職後帶到公司外會破解,就可看到其中的運算公式,請問有何最佳方式可處理?

aqr199 iT邦新手 2 級 ‧ 2010-01-24 11:01:22 檢舉
如果有輸入參數及大量的運算結果, 公式是有可能被反解的
做成執行檔跟execl檔一樣有被帶走的疑問
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
14
jamesjan
iT邦高手 1 級 ‧ 2010-01-25 09:03:46
最佳解答

我的想法是,如果寫在程式中的,都會有被破解的風險
讓員工只能在公司環境開啟 Excel 檔案,可能需要搭配 DRM 的軟體
或是微軟的 Windows Rights Management
另一個方式是讓員工無法於本機執行該 Excel 檔(並且無法下載)
方式是使用 Terminal Server 讓員工以遠端登錄的方式直接開啟該 Excel 檔案
同時必須將 Excel 的功能表關閉,並且讓員工無法儲存該 Excel 檔
(這是我目前使用的一種方式)

讓 Excel 無法存檔的程式,宣告一個 Global 變數 theFLG,於開啟工作表時,設定為 True

<pre class="c" name="code">
Private Sub Workbook_BeforeClose(Cancel As Boolean)
  If theFLG Then Cancel = True
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
  If theFLG Then Cancel = True
End Sub

Private Sub Workbook_Open()
  theFLG = True
End Sub

關閉功能表的方法可以參考這本書,要研究一下
Excel 2003 power programming with VBA

或者參考一下之前發表過的一篇
http://ithelp.ithome.com.tw/question/10014701

jamesjan iT邦高手 1 級 ‧ 2010-01-25 09:18:27 檢舉

Sorry,沒注意到
Workbook_BeforeClose 這一段會導致 Excel 無法關閉的
除非是在 Close 之前要再做一些程式的處理,否則這一段程式碼是不需使用的
要使用的話要再另外做一個關閉的按鈕供使用者操作

12
adwings
iT邦新手 4 級 ‧ 2010-01-23 19:38:11

這方面的保護都有很多可以破解的軟體...
如果真的要破的話是找的到的,基本上只能防普通人,防不了小人

頂多就文件保護,不給人修改吧,但是excel不知道會不會幫你隱藏公式
這就沒試過了...

但是以上的方法還是會被破解Orz

18
ltc
iT邦新手 4 級 ‧ 2010-01-24 08:32:46

分成兩個AB檔案,分開存放
A檔案:開放使用,部分資料需連結B檔案使用
B檔案:藏起來

14
bigredinf
iT邦新手 4 級 ‧ 2010-01-24 09:51:05

找客製化軟體公司,把計算方式放到
程式,編譯成EXE,就不容易破解了。

******
必利得免費進銷存+總帳系統
(不限時間筆數,含網路版),
歡迎下載使用
www.bigredinf.net 必利得資訊
******

14
chongbing
iT邦新手 2 級 ‧ 2010-01-24 13:53:09

用FileMaker來做是更好的做法,富有彈性,可以單機、也可以多人、區域網路或Web共用。

20
cuteli88
iT邦新手 4 級 ‧ 2010-01-25 09:40:54

1.先將整個sheet 全選amrk(欄和列的交界那個位置..左上角)
2.格式 保護..把鎖定及隱藏勾拿掉..
3.再回工作表選取要隱藏起來的公式欄位
4.格式 保護..把鎖定及隱藏勾起來..
5校閱-保護工作表...可以設密碼...
6.去點選隱藏的工作格..沒看到就是ok了..
ps..密碼可別忘了...因為若沒記錯..就算copy的檔..密碼 還是有用..不知道有沒有破解的工 具..

我要發表回答

立即登入回答