vb.net 与 Word 邮件合并交互

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

我有一个 vba 脚本,用于操作已通过邮件合并设置的 Word 文档,以使合并后的文档采用我们业务喜欢的格式,但不是 Word 可用的默认输出。我一直在要求尝试开发代码,以便可以将其合并到公司大多数人使用的 vb.net 程序中,因为目前前端员工要使用它,他们要么必须a)向我的部门发送word文档,以便我们可以嵌入 vba 宏代码,或者 b) 我们必须整理一些文档,向他们展示如何自己添加 vba 代码,这两个选项都不完美,所以我一直在查看 Microsoft.Office.Interop.Word库来实现这个功能。

我所坚持的一点是所需的一点是有一个组合下拉框,其中填充了可用于文档的合并字段。

根据我迄今为止的研究,我有以下代码:

Dim wrdDoc As Microsoft.Office.Interop.Word.Document
Dim wordApp As Microsoft.Office.Interop.Word.Application
wrdApp = CreateObject("Word.Application")
wrdDoc = wrdApp.Documents.Open(txtMergeDocPath.Text, , True)
Dim fields As Word.MailMergeFields = wordDoc.MailMerge.Fields
For Each field As Word.MailMergeField In .Fields
    cmbFields.Items.Add(field.name)
Next

当前错误是“name”不是“MailMergeField”的成员是否有人知道正确的属性,以便将邮件合并字段名称添加到组合框中?

vb.net ms-word
1个回答
0
投票

您可以搜索微软的文档。与名字无关。

但是,有一个属性Code,它将包含有关合并字段的信息。格式就像

{MERGEFIELD ItemName.PropertyName extraOptionalInfo}

因此,如果

ItemName.PropertyName
是您想要的,您可以拆分该字符串并检索它,

For Each field As Word.MailMergeField In fields
    Dim s = field.Code.Split(" "c)(1).Split("."c)
    Dim name = s(0)
    Dim prop = s(1)
    cmbFields.Items.Add(name)
    ' or
    cmbFields.Items.Add(prop)
Next

根据这些字符串的内容,其中一个应该就是您要查找的内容。

© www.soinside.com 2019 - 2024. All rights reserved.