Excel VBA:启用宏设置

use*_*125 8 excel vba excel-vba

我写了一个宏方法,在打开工作表时自动调整Excel工作表中的列.但是,如果用户未在Excel中启用宏,则此解决方案不起作用.

有没有办法检查用户是否在Excel中禁用了VBA宏,然后使用Excel VBA代码启用宏?

bre*_*tdj 13

执行此操作的标准方法是强制用户使用启动屏幕启用宏.

  • 除了spash屏幕之外,工作簿中的所有工作表都 非常隐藏(只能通过VBA或VBA编辑器进行更改)
  • 如果启用了宏:
    1)当工作簿打开时,代码取消隐藏所有这些非常隐藏
    的工作表2)当工作簿关闭时,所有这些工作表再次被隐藏
  • 如果未启用宏,则用户只能看到启动画面说"请启用宏,关闭然后重新打开此文件"

下面列出了两种具有此技术完整代码的链接

  1. Brad Yundt 在TekTips上介绍了这一点
  2. Jonske 在VBAeXpress

  • 我选择上面的第一个链接,因为它使用BeforeSave.使用BeforeClose的问题是用户可能已经进行了他们不想保存的更改,通过在BeforeClose事件中保存工作簿来覆盖该选项,如在第二个链接中那样.另一件事是你需要处理任何应该被隐藏的工作表,或者如果他们可以这样做,则被用户隐藏. (4认同)
  • 有趣的技巧 (2认同)

ass*_*ias 4

这是一项安全功能。如果你可以在 Excel 中用 vba 禁用它,那就达不到目的了。恐怕答案是否定的,用户需要调整他的安全设置......

话虽这么说,您可以通过修改注册表来更改另一个应用程序的设置。在最新版本的 Office 上,这是定义行为的键:HKEY_CURRENT_USER\Software\Microsoft\Office\XXXX\Excel\Security您需要在其中修改(或创建)名为 的 DWORD vbawarnings。它可以采用的值如下(来源):

  • 1:启用所有宏(不推荐)
  • 2:禁用所有通知
  • 3:禁用除数字签名宏之外的所有宏
  • 4:全部禁用而不通知