我有一个启动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
答案 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 :(得分: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
使用以下枚举值:
如果你沿着注册表路线走下去,VBA编码器的建议是使用WMI脚本公开的安全注册表类...并检查你的用户是否确实拥有使该注册表写入的权限:可能有一个注册政策到位防止它。