检查Excel宏安全设置

时间:2015-10-28 14:45:30

标签: vb.net excel-vba vba excel

我有一个启动Excel宏的vb.net应用程序。 有没有办法首先检查Excel的宏安全设置?

Imports Excel = Microsoft.Office.Interop.Excel
Private Sub macrotest ()

     objExcel.Workbooks.Open(strPath)

     if ***'Check her what macro Security Settings is selected!*** Then
         objExcel.Run("SortIO")
     end if
End Sub

2 个答案:

答案 0 :(得分:0)

我在this网站上发现您可以检查注册表中的安全设置。我发现的一个问题是我的注册表项不在网站上引用的确切位置。话虽如此,您可能只想尝试抓住它,或者在注册表中找到更复杂的方法来查找VBAWarnings密钥。

    Dim strVBASecuritySetting As String = My.Computer.Registry.GetValue("HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Excel\Security", _
                                                                        "VBAWarnings", String.Empty)

    If strVBASecuritySetting = "1" Then

        objExcel.Run("SortIO")

    End If

这些是VBAWarnings的可能值:

  1. 全部启用
  2. 禁用所有通知
  3. 禁用除数字签名以外的所有内容
  4. 禁用所有通知

答案 1 :(得分:0)

这似乎已经交叉发布到Excel VBA问题页面了:你会介意说慢一点吗?

... 慢慢读取 ...

好吧,我可以在VBA中给你答案: WONUM | STATUS | CHANGEDATE ----------------------------- 1 | text1 | 28-Oct 1 | text2 | 25-Oct 1 | text3 | 31-Oct 1 | text4 | 1-Oct 2 | text3 | 28-Oct 2 | text3 | 25-Oct 2 | text3 | 31-Oct 3 | text3 | 1-Oct 3 | text3 | 1-Oct 4 | text3 | 25-Oct 4 | text3 | 1-Oct 属性。

可用值由Office.MsoAutomationSecurity枚举:

1 msoAutomationSecurityLow
2 msoAutomationSecurityByUI
3 msoAutomationSecurityForceDisable

这些是暴露给VBA的API中可用的宏的设置。在功能区的“开发人员”选项卡中可见的用户界面对应于NoAlias在上一个答案中解释的注册表设置:

HKEY_CURRENT_USER \软件\微软\办公室\ 15.0 \ EXCEL \安全\ VBAWarnings

使用以下枚举值:

  1. 启用所有宏
  2. 禁用所有带通知的宏
  3. 禁用除数字签名宏之外的所有宏
  4. 禁用所有宏而不通知
  5. 如果你沿着注册表路线走下去,VBA编码器的建议是使用WMI脚本公开的安全注册表类...并检查你的用户是否确实拥有使该注册表写入的权限:可能有一个注册政策到位防止它。