Excel VBA:启用macros设置

我写了一个macros方法来在打开表单时自动调整Excel表格中的列的大小。 但是,此解决scheme在用户未在Excel中启用macros的情况下不起作用。

有什么办法来检查用户是否在Excel中禁用了VBAmacros,然后使用Excel VBA代码启用macros?

这样做的标准方法是强制用户使用启animation面启用macros。

  • 除了spash屏幕之外,工作簿中的所有工作表都非常隐蔽 (只能通过VBA或VBA编辑器进行更改)
  • 如果macros被启用:
    1)打开工作簿时,代码将取消隐藏所有这些非常隐藏的工作
    2)当工作簿closures时,所有这些表都被重新隐藏起来
  • 如果没有启用macros,用户只能看到启animation面“请启用macros,closures然后重新打开这个文件”

下面列出了这个技术的完整代码的两个链接

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

这是一个安全function。 如果你可以在VBA中的Excel中禁用它将会失败的目的。 恐怕答案是否定的,用户将需要适应他的安全设置…

您可以通过修改registry来更改另一个应用程序的设置

这是另一种检查VBA是否启用而不必隐藏/显示工作表的方法。 隐藏/取消隐藏表的问题是,工作表可以保存在“启用”状态,closures而不保存,然后重新打开,不显示警告。

在模块(而不是工作表或工作簿macros)中创build以下function:

Public Function MacrosEnabled() MacrosEnabled = True End Function 

现在,无论您想要显示关于是否启用macros的通知,请input以下公式:

 =IF(ISERROR(MacrosEnabled()&NOW()),"Macros are disabled","Macros are enabled") 

如果您只是使用ISERROR(MacrosEnabled()) ,则每次打开电子表格时都不会重新计算该值。 通过连接NOW() ,每次打开电子表格时读取当前时间,并重新计算单元格的值。 我广泛地testing了这个方法,并且似乎非常可靠地指示macros是否被启用。

如果macros被禁用,则可以应用条件格式来执行一些操作:

  • 用鲜艳的颜色突出显示校验单元,也许可以改变“macros被禁用”文本,以包含如何启用macros的说明。

  • 通过设置其文本颜色和背景颜色相同,“隐藏”其值取决于macros的单元格被启用。

这是一个演示这种方法的电子表格 。

有一种方法可以自动启用macros,但是您至less需要一次完全控制客户机。 使用数字证书并使用它签名macros时,首次运行已签名的macros时,Excel将为您提供一个选项,以始终信任由此签名的macros。 当您信任它时,所有使用您的证书签名的macros将自动启用。

这是在公司networking上开发和pipe理macros的最佳select。

对不起,错误。 我的英语还不完美。 ;)

问候

如果该macros位于Excel加载项中,则不需要启用macros。 但是,加载项必须加载到加载macros对话框中 。