VBA Word:使用下拉字段中的数据创建超链接?

问题描述 投票:0回答:1

我们目前使用 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”事件触发吗?

任何帮助将不胜感激!

vba ms-word mailto
1个回答
0
投票

“由于文件来源不受信任,Microsoft 已阻止宏运行”警告(称为“Web 标记”或 MOTW)与 Microsoft 的此公告相关。这是在过去 18 个月左右推出的。

您仍然可以“在接收方可靠地运行宏”,但是(假设您没有代码签名证书,这是需要付费的)您的接收者需要接受如何执行此操作的教育,总而言之,选项是:

    首先“解锁”Word 文档/模板文件,或者
  • 将其保存在“受信任位置”(已创建“受信任位置”),或者
  • 您可以压缩(并且他们解压缩)文件
除了最后一个选项之外,请参阅上述链接网页的“允许 VBA 宏在您信任的文件中运行所采取的步骤”部分。

对于“压缩/解压缩”选项,就像发件人在分发文件之前压缩文件以及收件人在收到文件后解压缩文件一样简单。但是,使用不支持 MOTW 传播的 Zip 工具非常重要 - 您可以在此处查看 Zip 工具列表以及它们是否支持 MOTW 传播

https://github.com/nmantani/archiver-MOTW-support -comparison(请注意,此 Zip/Unzip 选项不是“官方”解决方案,因此它不在网页上,如果 Microsoft 更改其方法或 Zip 软件提供商更改方式,则此解决方案的可行性可能会发生变化他们的软件有效)。

您还问了另外两个问题,我将简要介绍一下:

    您潜在的“超链接解决方案”可能会遇到与上述相同的问题(即您将需要一个 VBA 宏来创建超链接,这意味着您遇到相同的 MOTW 问题)
  1. Word 文档/模板确实有“事件”(请参阅
  2. 使用文档对象的事件),但这些都不是“更改时”事件,您需要开始创建和分发 AddIn,这是一个更复杂的解决方案...网络上有许多网站讨论创建 Word AddIns(又名“全局模板”)。
© www.soinside.com 2019 - 2024. All rights reserved.