部落格觀察

聯絡我

Software

最新回應

在Excel安全性中,若使用者不啟用巨集,可能會導致開發者的所設計的一些功能無法執行,故要求使用者啟用巨集。(若是使用增益集,就不需要"啟用巨集",改天再來寫)

快照-200971132734_thumb[3]

設"中"會出現以下訊息。

設"低"不會出現訊息,直接啟用巨集。

快照-200971132932_thumb[2]

設"高"就直接停用巨集。

以下就介紹如何達成此功能

1.利用Excel 4.0巨集表來定義巨集函數。在工作表工具列按右鍵→插入→Excel 4.0 巨集表

快照-200971133148_thumb[4]

快照-200971133223_thumb[1]

輸入以下內容

=ERROR(FALSE)
=IF(ERROR.TYPE(RUN("TestMacro"))=4)
=ALERT("因停用了巨集功能,檔案將被關閉!",3)
=FILE.CLOSE(FALSE)
=END.IF()
=RETURN()

快照-20097113364_thumb[2]

2.在VBAProject新增一個Module,鍵入以下內容

Option Explicit
'為每個表定義隱藏名稱
Sub AddPrivateNames()
Dim sht As Worksheet
'列舉
For Each sht In Worksheets
'為每一個工作表指定"巨集表位置"
ThisWorkbook.Names.Add sht.Name & "!Auto_Activate", "=Macro1!$A$1", False
Next
End Sub

Sub HideMacroSheet()
'隱藏巨集表
ThisWorkbook.Excel4MacroSheets(1).Visible = xlSheetHidden
End Sub

3.在Workbook的open事件呼叫HideMacroSheet、AddPrivateNames方法

Option Explicit
Private Sub Workbook_Open()
HideMacroSheet
AddPrivateNames
End Sub

快照-200972145147_thumb[1]

4.完成後就存檔、關閉,然後再開一次剛剛儲存的檔案,記得至少要執行過一次巨集讓剛剛設定的程式生效,然後再存一次檔。

快照-200971132932_thumb[3] 

5.爾後使用者只要不啟用巨集,活頁簿就會被關掉。

快照-200972151041_thumb[5]

6.此功能只有在Excel 2003測試成功

7.範例下載:若不啟用巨集則關閉活頁簿.rar

 

新手發帖請多包涵


回應

  • bird 2009/7/16 上午 12:27 回覆

    # re: [VBA] 如何 利用 Excel 4.0 巨集表 不啟用巨集則關閉活頁簿

    可以參考此版面 裡面講的非常詳細

    但有點雜

     MOS MI電子名片製作.rar

    是其中我覺得不錯的範例 保護的很嚴密

    您可以破解看看其中的手法

    然後再教我們

    http://www.officefans.net/cdb/viewthread.php?tid=59862

  • yc421206 2009/7/16 下午 05:54 回覆

    # re: [VBA] 如何 利用 Excel 4.0 巨集表 不啟用巨集則關閉活頁簿

    to bird :

    這是要做啥的~我看不太懂你的意思@@?

  • bird 2009/7/16 下午 10:53 回覆

    # re: [VBA] 如何 利用 Excel 4.0 巨集表 不啟用巨集則關閉活頁簿

    版主您好

    謝謝您提供此法

    這方法在2007版

    不能使用有否其他方法使 宏 自動開啟

  • yc421206 2009/7/17 上午 12:25 回覆

    # re: [VBA] 如何 利用 Excel 4.0 巨集表 不啟用巨集則關閉活頁簿

    to bird :

    把巨集弄成增益集...應該就可以了

  • bird 2009/7/18 下午 02:55 回覆

    # re: [VBA] 如何 利用 Excel 4.0 巨集表 不啟用巨集則關閉活頁簿

    这议题老刀前辈首次发表后

    后续不断的 有人去修正与改进

    我试了一下还不错

    可是VBAProject的程式多一個被看到与破解的風險

    可否使用Excel 4.0 宏表功能直接

    达到VBAProject各种定义工作表等隐藏的功能

    而不用VBAProject

    =ERROR(TRUE,$A$6)
    =RUN("NoRunMacro")
    =RETURN()


    =IF(ERROR.TYPE($A$3)=4)
    =ALERT("对不起!由于您禁用了宏,本文件禁止打开!如要打开本文件,请按启用宏!",3)
    =FILE.CLOSE(FALSE)
    =RETURN()
    =ELSE()
    =ERROR(TRUE)
    =RETURN()
    =END.IF()


     

  • HUNGCHILIN 2009/7/18 下午 03:32 回覆

    # re: [VBA] 如何 利用 Excel 4.0 巨集表 不啟用巨集則關閉活頁簿

    博士您好 

    我是HUNGCHILIN

    还有跟小妹(黄玉婷)连络吗?

    很久不见了

    这两天发文也来看看你的BLOG (bird)

    没想到你回这么认真 总之谢谢你

    关于这一篇 我当时也学习了一阵子

    后来心得也放在上面的网页上

    学习后总觉得缺少一些东西

    像下面这三种都可以做窗体 学无止境尽

    A.  4.0窗体DIALOG.BOX   B.  对话框 5.0    C.  VBA窗体

    上面那个建议你可以看一下

    不用VBA直接使用4.0宏表做看看

    有空到阿吉的BLOG也留個言

     

  • yc421206 2009/7/18 下午 11:39 回覆

    # re: [VBA] 如何 利用 Excel 4.0 巨集表 不啟用巨集則關閉活頁簿

    to HUNGCHILIN :

    1.你指的是這個http://blog.yam.com/itbox 鈺婷嗎?


    3.還有~我不是博士...

    to bird

    1.就我所知道用增益集也不用使用者開啟安全性,而專案也可加密,你可以試看看。

    2.我有看過人加用dll做成自訂選單、工具列,但是我不會,dll對專案的l安全性又更高了。

    3.世上沒有絕對的安全


*標 題:

*姓 名:

 電子郵件: (將不會被顯示)

 個人網頁:

*回應

登入後使用進階評論

Please add 2 and 4 and type the answer here: