Board logo

標題: 一個保護問題, [打印本頁]

作者: 317    時間: 2010-12-7 20:49     標題: 一個保護問題,

大大們:好
小妹有一問題想請教各大大, 現把檔案上傳, 內有明細說明, 請大大教導,
[attach]3981[/attach]
作者: Hsieh    時間: 2010-12-7 22:10

比較簡單的做法
反向思考
關閉檔案時將所有工作表隱藏,只剩一個空白工作表
要看工作表需表單開啟後,用VBA來顯示
如此一來,要啟用巨集才能開啟被隱藏的工作表
作者: 317    時間: 2010-12-7 22:35

hsieh大大, 安好
謝謝回應, 假若小妹新增工作表3,如大大所說,那程式該如何編寫, 請大大協助, 因道行太淺, 謝謝!!
作者: Hsieh    時間: 2010-12-7 23:29

大意如附件請參考[attach]3987[/attach]
作者: GBKEE    時間: 2010-12-8 07:21

回復 1# 317
將資料庫(字體顏色設與儲存格顏色同色) 設定資料庫保護時 不勾選 使用者可使用的選項
Sheets("資料頁").Protect Password:="1234", DrawingObjects:=True, Contents:=True, Scenarios:=True
在停用巨集時 資料頁便有保護了
作者: 317    時間: 2010-12-8 07:27

本帖最後由 317 於 2010-12-8 07:28 編輯

hsieh大大,早晨
大大的方法是可行, 但有一個問題, 便是停用巨集開啟, 的確是顯首頁, 其他隱藏, 閒家便不可見資料頁,但在巨集啟用時開啟, 用密碼登入, 登入後畫面顯示同樣是首頁, 而其資料頁依然隱藏, 請教大大, 如何做到大大所說的效果, 停用巨集, 開啟顯示首頁, 用家必須用密碼登入, 同樣在啟用巨集後, 則顯示工作表2,用家登入介面, 當登入後,工作表2及3都隱藏,工作表1資料頁則顯示, 謝謝,
作者: Hsieh    時間: 2010-12-8 20:24

回復 6# 317

工作表命名配合使用者名稱
    [attach]3996[/attach]
作者: 317    時間: 2010-12-8 21:42

回復 5# GBKEE
大大好, 小妹想請Sheets("資料頁").Protect Password:="1234", DrawingObjects:=True, Contents:=True, Scenarios:=True此行是放在資料頁哪位置, 而1234所代表就是什麼, 謝謝謝

最後於此謝過大大回應,
同時再謝過hsieh大大,
聖誕快到, 祝願聖誕快欒...
作者: GBKEE    時間: 2010-12-9 07:33

回復 8# 317
所設定保護的密碼
作者: 317    時間: 2010-12-9 19:05

本帖最後由 317 於 2010-12-9 19:11 編輯

GBKEE大大好:
小妹反覆研究大大說及把"Sheets("資料頁").Protect Password:="1234", DrawingObjects:=True, Contents:=True, Scenarios:=True"此行存放於存密碼保護處,
小妹愚蠢, 大大所說的存放密碼處, 是否是圖示中, 若是請大大指導該如何填入, 若不是請大大教導, 最後請大大勿怪小妹愚蠢, 祝願快樂.




[attachimg]
作者: GBKEE    時間: 2010-12-9 20:16

本帖最後由 GBKEE 於 2010-12-9 20:18 編輯

回復 10# 317
你這圖片2是專案設定密碼用的,必需用手動的,無法用vba操作的
Sheets("資料頁").Protect Password:="1234", DrawingObjects:=True, Contents:=True, Scenarios:=True
上式是檔案中 工作表名為"資料頁"的設定保護的程式碼,且設立密碼為"1234"
先前告訴你將資料頁的字體顏色與儲存格的底色 顏色設為同樣顏色.
如關閉檔案時 執行此程式碼, 可預防再度開啟檔案, 如停用巨集時且資料頁沒隱藏.將不會暴露資料頁的內容
作者: 317    時間: 2010-12-9 20:56

GBKEE大大:好
明白了, 在這個發問流程中,
GBKEE
hsieh
两位大大給予小妹寶貴的指導, 衷心感謝!!,
最後, 祝願快樂,健康....
作者: solely    時間: 2010-12-9 22:18

我在想.....
樓主會隱藏工作表,應該不只是想保護工作表,而是想...保密
如果,只針對工作表設密碼保護,應該是沒什麼作用
我想...只要一個簡單的"等於的公式"就能窺視「資料頁」的內容了~
作者: 317    時間: 2010-12-9 23:00

回復 13# solely
大大好,
小妹有一Excel檔案室,而在公司中有3位同事使用, 此檔案用密碼登入開啟, 而vba保護專密碼保護, 當然這並非高度的機密, 但當中資料也不想隨意給人看, 一直沒有事情發生,
一天, 公司中來了位新同事, 公司配給了他新電腦, 而新腦中新同事未啟用巨集, 他隨意開啟此檔案, 發問了小妹負責的資料, 這令我吃驚, 這才知道所有涉入程式密碼保護的Excel檔案,
在停用巨集的情況下, 等於沒有保護, 任何人都可以隨意看, 於是在此討論區中請教各大大, 看可有辦法彌補此缺點, 而hsieh及GBKEE两位大大給予指導,
檔案總算於停用巨集時開啟,閒家是看不到資料, 當然如果是當中高手,哪還是徒奈何, 但假若文件是高度機密的話,公司自會請專入設法保護, 我等這些行政小文員, 不過是保護小小資料吧..
作者: GBKEE    時間: 2010-12-10 09:00

本帖最後由 GBKEE 於 2010-12-24 21:28 編輯

回復 14# 317
活頁簿設立開啟密碼,旁人無法開啟.
作者: 317    時間: 2010-12-11 23:05

謝謝大大.
小妹感謝指導, 祝願快樂.
作者: 周大偉    時間: 2010-12-24 20:17

GBKEE大大,
上述所提及的保護方式, 大大可否做一範例檔, 給予我等程度低而就想從中學習的門生參考,
感恩..
作者: GBKEE    時間: 2010-12-24 21:28

回復 17# 周大偉
如下圖 選取後 輸入密碼即可

[attach]4198[/attach]
作者: 周大偉    時間: 2010-12-24 21:55

大大,
先行謝過, 大大給予教導, 是一般選項中設立密碼, 而小弟所想向大大學習的便是把儲存格字體設定與儲存格相同色, 再加上密碼設定為1234程式範例, 曾與友好討論, 但沒有得到結果, 故請大大指導, 希望大大給予一範例. 好讓從中學習, 先謝過大大, 聖誕快樂..
作者: GBKEE    時間: 2010-12-25 10:24

回復 19# 周大偉
1.將程式碼貼於 ThisWorkbook,  專案的屬性->保護  勾選鎖定專案, 輸入密碼
2.活頁簿另存檔案指令 -> 工具-> 一般選項  輸入活頁簿保護密碼
  1. Option Explicit
  2. Private Const 密碼 = "1234"
  3. Private Const 字體顏色 = 1
  4. Private Const 保護色 = 2    '可自行修改
  5. Dim Answer$
  6. Private Sub Workbook_Open()
  7.     Sheets_Protect
  8.     Answer_Pass
  9. End Sub
  10. Private Sub Workbook_BeforeClose(Cancel As Boolean)
  11.     Sheets_Protect
  12.     Save
  13. End Sub
  14. Private Sub Workbook_SheetActivate(ByVal Sh As Object)
  15.     Answer_Pass
  16. End Sub
  17. Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
  18.      My_UnProtect (IIf(Answer = 密碼, True, False))
  19. End Sub
  20. Private Sub Sheets_Protect()
  21.     Dim Sh As Worksheet
  22.     For Each Sh In Sheets
  23.         With Sh
  24.         .Unprotect 密碼
  25.         .Cells.Font.ColorIndex = 保護色
  26.         .Cells.Interior.ColorIndex = .Cells.Font.ColorIndex
  27.         .EnableSelection = xlNoSelection
  28.         .Protect PassWord:=密碼, DrawingObjects:=True
  29.         End With
  30.     Next
  31. End Sub
  32. Private Sub My_UnProtect(Y As Boolean)
  33.     Application.ScreenUpdating = False
  34.     With ActiveSheet
  35.         .Unprotect 密碼
  36.         If Y = True Then
  37.             .Cells.Font.ColorIndex = 字體顏色
  38.             .Cells.Interior.ColorIndex = xlNone
  39.             Application.CommandBars.FindControl(ID:=30029).Enabled = True
  40.         Else
  41.             .Cells.Font.ColorIndex = 保護色
  42.             .Cells.Interior.ColorIndex = .Cells.Font.ColorIndex
  43.             .EnableSelection = xlNoSelection
  44.             .Protect PassWord:=密碼, DrawingObjects:=True
  45.             Application.CommandBars.FindControl(ID:=30029).Enabled = False
  46.         End If
  47.     End With
  48.     Application.ScreenUpdating = True
  49. End Sub
  50. Private Sub Answer_Pass()
  51.     If Answer <> 密碼 Then
  52.         If InputBox("密碼??", "輸入密碼") = 密碼 Then Answer = 密碼
  53.     End If
  54.     My_UnProtect (IIf(Answer = 密碼, True, False))
  55. End Sub
複製代碼

作者: 周大偉    時間: 2010-12-25 20:26

大大, 先行謝過,
相信這篇程式給予學習生一個學習機會, 大大, 下列這行可否告知, 而30029的含意是..
Application.CommandBars.FindControl(ID:=30029).Enabled = False
最後祝願快樂, 感恩..
作者: GBKEE    時間: 2010-12-25 20:40

本帖最後由 GBKEE 於 2010-12-25 20:42 編輯

回復 21# 周大偉
Application.CommandBars.FindControl(ID:=30029).Enabled = False
Control 指令 -> 保護(ID:=30029) 的使用(停止= False)
每一Control 有一自己的 ID號數
作者: solely    時間: 2010-12-26 14:55

回復 15# GBKEE
對於保護保密,我一直很困惑.....
若只是想避免工作表的資料被無心者所修改,只要保護工作表就夠了。
若是不想讓別人隨意開啟活頁簿,只要保護活頁簿即可。
[attach]4210[/attach]
若是想保密,就算工作表設定保護及層層關卡(如圖三),只要能開啟活頁簿,
就如圖一、二所示,就算停用巨集,一樣能窺視資料內容。
似乎能不能看到工作表的內容,關鍵在於能不能開f啟活頁簿。
不知道我的想法有沒有錯?!
[attach]4211[/attach]
作者: GBKEE    時間: 2010-12-26 16:10

回復 23# solely
不錯 你的觀念很正確,保護工作表只能防君子,不能防小人. 只有活頁簿設密碼,才能保密.
作者: 周大偉    時間: 2010-12-26 18:23

回復 22# GBKEE

謝謝大大, 小弟受教了, 新年快到, 祝願新年進步, 健康..
作者: 317    時間: 2010-12-26 21:22

回復 23# solely

小妹認同大大們所說, 保護是防君子, 而不能防小人.......
作者: solely    時間: 2010-12-26 22:40

回復 26# 317
正因為如此,當初讓我覺得很炫的保護密技,就沒再深入研究。
因為層層的密碼保護及深度隱藏,只會造成自已維護資料的不便。
後來,我還是採用最簡單的方法...
就是把可以分享的欄位匯到另一個活頁簿XD
作者: cwn41    時間: 2010-12-31 15:52

很想學可惜無法下載積分不夠
作者: HUNGCHILIN    時間: 2011-1-2 00:42

這個題目 是大家很常見的問題
在製作公用系統.多人以上使用時會使用到
我們通常會使用一些保護保密的手法將系統包裝起來
以避免使用者操作錯務.簡單說很多部分是為了防呆措施

製作小系統與程式需要許多創造力與想法加油
作者: HUNGCHILIN    時間: 2011-1-2 01:04

本帖最後由 HUNGCHILIN 於 2011-1-2 09:38 編輯
回復  317
正因為如此,當初讓我覺得很炫的保護密技,就沒再深入研究。
因為層層的密碼保護及深度隱藏, ...
solely 發表於 2010-12-26 22:40



不知這篇是否在告訴我不要再寫保護保密帖?目前只寫到2/3.----------------------------------------------
作者: basarasy    時間: 2011-1-3 00:40

回復 30# HUNGCHILIN

請問大大
只用 VBAProject 保護VBA 安全嗎?
作者: 317    時間: 2011-1-3 07:42

本帖最後由 317 於 2011-1-3 07:46 編輯

回復 31# basarasy

如小妹先前發問, 停用巨集時什麼保護都是沒用, 或可按hsieh大gbkee大大的教導方法參考,,
但vba專案保護在停用巨集時, 其他人可以看到巨集保護下的工作表, 程式區還是沒能看到,,
作者: basarasy    時間: 2011-1-3 08:29

回復 32# 317


    可能我表達不好.  
我是問 只用 VBAProject 保護VBA   ,VBA內的東西 安全嗎?
作者: solely    時間: 2011-1-3 19:21

不知這篇是否在告訴我不要再寫保護保密帖?目前只寫到2/3.----------------------------------------- ...
HUNGCHILIN 發表於 2011-1-2 01:04

大師言重了~
對excel初學者的我來說,現在學保護保密的技巧還太早,
但在好奇心的驅使下,還是學了一些些,
因此,在不是很了解的情況下,對保護保密的目的產生許多的困惑。
就像先前我寫了一個成本試算,
為了工作表的美觀(初學者...落落長的公式讓人看了頭暈-.-")
我就現學現賣...
學人家把公式放在另一張工作表上,然後把它隱藏起來(如圖一二所示)
後來,當我學到更簡單的隱藏方式(如圖三)
就讓我很困惑...相同的作用,我又何必大費周章的繞了一大圈。
[attach]4298[/attach]
作者: HUNGCHILIN    時間: 2011-1-3 21:48

本帖最後由 HUNGCHILIN 於 2011-1-3 22:05 編輯

回復 33# basarasy

basarasy兄您好
這是個好問題也是大家持續討論多年的一個題目
從您上次在版上提出這問題已經四五個月,在嘗試與操作中是否有其他感想可以分享?

這次會再次詢問應該是有些使用上的心得,才會有這感慨

這問題舉個例子,在各大OFFICE網站 表面與實際上均不幫破解
但在網站中均會置放VBP破解軟體,有工作表,有工作簿,有VBP破解都有,當然麻辣也不例外

[原創] 簡易版的仿 VBA專案加解鎖器增益集

以此為例我们可以知道,VBP保護並不安全,只要得到各大網站上釋放的工具就可以破解。

有增加VBP防護的技巧嗎? 有 不只一個
技巧部份已經發揮在保護保密帖的部份檔案中了,就等待大家來挖掘...
作者: basarasy    時間: 2011-1-3 22:46

回復 35# HUNGCHILIN

謝謝HUNGCHILIN大大的說明.
我以看過大大的保護保密帖.
有些下載後不知用法.
簡易版的仿 VBA專案加解鎖器增益集  只有 .xls, .xla, .xlt
我現在用的都是 .xlsx  .xlsm
期望HUNGCHILIN大大的VBA專案加解鎖器.
作者: luckwind    時間: 2011-2-11 12:50

敢問可以只針對單一活頁開啟時做密碼保護嗎?其他活頁則可以正常使用....
作者: dodocho    時間: 2011-3-13 00:50

好像跟我問的有關,可是看不懂,又不能下載檔案,我要加油了
作者: lin    時間: 2011-3-17 16:36

若以廣義解釋,EXCEL保護方式很多:
檔案可以各種方式設定密碼,另外也可以設為唯讀,或於存檔時另存備份、隱藏檔案等
儲存格可設密碼保護,另外也可以隱藏、群組等
工作表可設密碼保護,另外也可以scrollarea、隱藏等
其實應視個別需要而決定使用方法
作者: infoverdad    時間: 2011-7-19 21:19

本帖最後由 infoverdad 於 2011-7-19 21:23 編輯

分享我已用在工作上的方法:
關閉檔案時將機密工作表隱藏
  1. Private Sub Workbook_BeforeClose(Cancel As Boolean)
  2. Sheets("首頁").Select
  3. Worksheets("Secret").Visible = 2
  4. Me.Save
  5. End Sub

  6. Private Sub Workbook_Open()
  7. Worksheets("Secret").Visible = 2
  8. If InputBox("請輸入密碼或取消") = "123" Then
  9.     MsgBox "USER,你好!!"
  10.     Worksheets("Secret").Visible = -1
  11.     Sheets("Secret").Cells.Font.ColorIndex = 56
  12. Else
  13.     'MsgBox "你好!!"
  14.     Sheets("Secret").Cells.Font.ColorIndex = 2
  15.     Worksheets("Secret").Visible = 2
  16. End If
  17. End Sub
複製代碼
打開檔案提示KEY入密碼"123",則"SECRET"工作表會出現
若不輸入密碼,則"SECRET"工作表會繼續被隱藏,且無法用取消隱藏的方式打開!
作者: infoverdad    時間: 2011-7-19 22:51

Worksheets("sheet1").Visible = 0 等同
Worksheets("sheet1").Visible=xlSheetHidden
較低階的隱藏,可以用「格式」=>「工作表」=> 取消隱藏

Worksheets("sheet2").Visible = 2 等同
Worksheets("sheet1").Visible=xlSheetVeryHidden
較高階的隱藏,無法用「格式」=>「工作表」=> 取消隱藏
要用Worksheets("sheet2").Visible = -1 改變其隱藏之狀態

[attach]7061[/attach]
作者: peter460191    時間: 2012-7-31 12:20

回復 41# infoverdad


infoverdad 您好:
有下載附件試用,但好像密碼錯誤也可以打解除保護,是我使用不正確嗎?
作者: GBKEE    時間: 2012-7-31 13:59

回復 42# peter460191
41# 附檔 VBA  ThisWorkbook   已告訴你密碼
  1. Private Sub Workbook_Open()
  2.     Worksheets("Secret").Visible = 2
  3.     If InputBox("請輸入密碼或取消") = "123" Then
  4.         MsgBox "USER,你好!!"
  5.         'Worksheets("Secret").Visible = -1
  6.         Worksheets("Secret").Visible = xlSheetVisible
  7.         Sheets("Secret").Cells.Font.ColorIndex = 56
  8.     Else
  9.         'MsgBox "你好!!"
  10.         Sheets("Secret").Cells.Font.ColorIndex = 2
  11.         Worksheets("Secret").Visible = 2
  12.     End If
  13. End Sub
複製代碼

作者: luhpro    時間: 2014-11-1 21:37

本帖最後由 luhpro 於 2014-11-1 21:47 編輯
Worksheets("sheet1").Visible = 0 等同
Worksheets("sheet1").Visible=xlSheetHidden
較低階的隱藏,可 ...
infoverdad 發表於 2011-7-19 22:51

其實只要可以開啟巨集編輯畫面,
工作表沒有設保護,
當 Excel VBA 沒有設保護密碼,
可以解除工作表的隱藏狀態.
[attach]19447[/attach]

不過若 Excel VBA 有設密碼,
若設 Visible=0
Excel 會擋 Visible 屬性的設定.
[attach]19448[/attach]

但若設  Visible=-1
則不管你有沒有設 Excel VBA 保護密碼, (可看到圖中程式碼編輯區是灰色的,該程式執行時並沒有解開 Excel VBA 密碼)
照樣通通都能看到,
所以這種保護方式層級其實並不高喔.
[attach]19450[/attach]




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)