我在受信任的位置保存了启用Excel宏的工作簿。我试图打开该工作簿并从Outlook运行宏。
Sub run_Excel_Macro()
Dim App As Excel.Application
Dim wkbk As Excel.Workbook
Set App = New Excel.Application
App.Visible = True
Set wkbk = App.Workbooks.Open("C:\file.xlsm")
App.OnTime DateAdd("s", 5, Now()), wkbk.Name & "!macro"
Set App = Nothing
Set wkbk = Nothing
End Sub
我遇到的问题是Excel的安全通知会弹出,询问我是否信任该内容以及是否应启用宏。
为什么弹出安全通知?我怎样才能解决这个问题?
答案 0 :(得分:2)
一种选择是为您的宏创建数字签名: https://support.office.com/en-ca/article/Digitally-sign-your-macro-project-956e9cc8-bbf6-4365-8bfa-98505ecd1c01
由于您创建的数字证书不是由正式的受信任证书颁发机构颁发的,因此使用此类证书签名的宏项目称为自签名项目。 Microsoft Office仅在具有自签名证书的计算机上信任自签名证书,该证书已添加到“证书 - 当前用户”存储中的“受信任的根证书”文件夹中。
创建自签名证书 Windows 7,Windows Vista或Windows XP
创建数字签名对话框 使用Internet Explorer
查看证书要在“个人证书”存储区中查看证书,请执行以下操作:
在Excel,PowerPoint,Publisher,Visio或Word中对宏项目进行数字签名
注意如果您尚未选择数字证书或想要使用其他证书,请单击“选择”。选择证书,然后单击“确定”。
备注
建议您仅在解决方案经过测试并准备好分发后对宏进行签名:当签名宏项目中的代码以任何方式更改时,其数字签名将被删除。但是,如果您拥有以前用于在计算机上对项目进行签名的有效数字证书,则在保存宏项目时会自动重新签名。
如果要阻止解决方案的用户意外更改宏项目并使签名无效,请在签名之前锁定宏项目。您的数字签名意味着您保证项目自签署后未被篡改。您的数字签名并不能证明您编写了该项目。因此,锁定宏项目并不会阻止其他用户用其他签名替换数字签名。公司管理员可以重新签名模板和加载项,以便他们可以控制用户在其计算机上运行的内容。
如果您创建了一个向宏项目添加代码的加载项,您的代码应该确定项目是否经过数字签名,并且应该在签名项目继续之前通知用户更改已签名项目的后果。
对数字签名时,如果用于签名的证书已过期或签名后已撤销,则获取时间戳以便其他用户可以验证您的签名非常重要。如果您在没有时间戳的情况下对宏进行签名,则签名在证书的有效期内仍然有效。