我写了一个宏方法,在打开工作表时自动调整Excel工作表中的列。但是,如果用户未在Excel中启用宏,则此解决方案不起作用。
有没有办法检查用户是否在Excel中禁用了VBA宏,然后使用Excel VBA代码启用宏?
答案 0 :(得分:12)
执行此操作的标准方法是强制用户使用启动画面启用宏。
下面列出了两种具有此技术完整代码的链接
答案 1 :(得分:3)
这是一项安全功能。如果你可以在vba中在Excel中禁用它,它将失败目的。 我担心答案是否定的,用户需要调整他的安全设置......
更改其他应用程序的设置答案 2 :(得分:3)
这是另一种检查是否启用VBA而无需隐藏/显示工作表的方法。隐藏/取消隐藏工作表的问题是工作表可以保存在"已启用"状态,关闭而不保存,然后重新打开,不显示警告。
在模块(不是工作表或工作簿宏)中创建以下函数:
Public Function MacrosEnabled()
MacrosEnabled = True
End Function
现在,在您要显示有关是否启用宏的通知的任何单元格中,输入以下等式:
=IF(ISERROR(MacrosEnabled()&NOW()),"Macros are disabled","Macros are enabled")
如果您只使用ISERROR(MacrosEnabled())
,则每次打开电子表格时都不会重新计算该值。通过连接NOW()
,每次打开电子表格时都会读取当前时间,因此将重新计算单元格的值。我广泛测试了这种方法,它似乎非常可靠地表明是否启用了宏。
如果禁用了宏,则可以应用条件格式来执行许多操作:
突出显示明亮颜色的复选单元格,并且可能会更改"宏被禁用"文本以包含有关如何启用宏的说明。
"隐藏"通过将文本颜色和背景颜色设置为相同来确定其值取决于宏的单元格。
答案 3 :(得分:0)
有一种方法可以自动执行宏,但您需要至少对客户端计算机进行一次完全控制。使用数字证书并使用它对宏进行签名,第一次运行签名的宏时,Excel将为您提供始终信任由此签名的宏的选项。当您信任它时,将自动启用使用您的证书签名的所有宏。
这是在公司网络上开发和管理宏的最佳选择。
对错误感到抱歉。我的英语还不完美。 ;)
此致