我们目前使用 Word 模板来制定在线会议议程。每位与会者必须在会议结束后通过电子邮件确认其出席情况。为了方便起见,议程包含一些“会议类型”、“会议顺序”、“会议日期”、“会议时间”等下拉列表。 还有一个链接到 VBA 宏的按钮,该按钮收集这些下拉字段中的值并将它们放入空邮件中,因此结果是:
From: [email protected]
Subject: Attendence of <XYZ> meeting number <x>/2023 on <DD/MM/YYYY>
Body: Some legalese blah
VBA 代码如下所示:
Private Sub CommandButton1_Click()
strCount = ActiveDocument.Range.ContentControls(1).Range
strTeam = ActiveDocument.Range.ContentControls(2).Range
strDate = ActiveDocument.Range.ContentControls(3).Range
strSubject = "Attendance of "&strTeam&" meeting number "&strCount&"/2023 on "&strDate
strBody = "Some legalese blah"
Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)
With objMail
.To = "[email protected]"
.Subject = strSubject
.Body = strBody
.Display
End With
以前一直工作得很好,直到不久前微软改变了安全限制。现在,当与会者打开议程时,他们会收到错误消息:
安全风险:由于文件来源不受信任,微软已阻止宏运行
由于我还没有找到一种方法可以在接收方可靠地运行此宏,因此我正在考虑用以下超链接替换命令按钮:
a href="mailto:[email protected]?subject=Attendence of <XYZ> meeting number <x>/2023 on <DD/MM/YYYY>&body=Some legalese blah"
(为了便于阅读,示例中包含空格,我知道我必须将“ ”替换为 %20)
为此,我必须将下拉字段的值放入超链接中。实现这一目标的最佳方法是什么?有没有办法引用该值(例如 Excel 中的单元格值)?或者我必须再写一个宏吗? word中的宏可以通过“onchange”事件触发吗?
任何帮助将不胜感激!
“由于文件来源不受信任,Microsoft 已阻止宏运行”警告(称为“Web 标记”或 MOTW)与 Microsoft 的此公告相关。这是在过去 18 个月左右推出的。
您仍然可以“在接收方可靠地运行宏”,但是(假设您没有代码签名证书,这是需要付费的)您的接收者需要接受如何执行此操作的教育,总而言之,选项是:
对于“压缩/解压缩”选项,就像发件人在分发文件之前压缩文件以及收件人在收到文件后解压缩文件一样简单。但是,使用不支持 MOTW 传播的 Zip 工具非常重要 - 您可以在此处查看 Zip 工具列表以及它们是否支持 MOTW 传播
https://github.com/nmantani/archiver-MOTW-support -comparison(请注意,此 Zip/Unzip 选项不是“官方”解决方案,因此它不在网页上,如果 Microsoft 更改其方法或 Zip 软件提供商更改方式,则此解决方案的可行性可能会发生变化他们的软件有效)。
您还问了另外两个问题,我将简要介绍一下: