0

我已经查看了使用宏执行 MailMerge 的建议。我只需要被推向正确的方向。在我开始处理 MailMerge 方面之前,我确实让宏打开 word 文件 (docx),然后使用输入的 Excel 表 1 项目信息以新名称保存。我正在从源文档运行宏,所以我不知道这是否是 vba 的问题。我让它打开 word 文件,但它询问我工作表 1 是否正常(源文件)。感谢您提供的任何帮助或指导

子 OpenDocFileNewName() ' ' OpenDocFileNewName 宏 ' '

Set WordApp = CreateObject("Word.Application.8")

Set WordDoc = WordApp.Documents.Open("C:\Users\mmezzolesta\Documents\_TestDataMerge\STANDARD.docx")

WordApp.Visible = True

'
'mail merge
'

Data = "C:\Users\mmezzolesta\Documents\_TestDataMerge\test_table.xlsm"

' WordDoc.MailMerge.OpenDataSource (Data)

WordDoc.MailMerge.OpenDataSource 文件名:=数据,SQLStatement:="SELECT * FROM [Sheet1$]"

'Sheets("Sheet1").Select

WordMailMerge.Application.ActiveDocument.SaveAs Filename:=("C:\Users\mmezzolesta\Documents\_TestMailMergeAuto") & "/" & Range("A2") & "Standard-Grounding-" & Range("e2").Text

WordApp.ActiveDocument.Close

WordApp.Quit

结束子

4

2 回答 2

0

选择表仍然有点麻烦。当我运行宏时,会弹出选择表框,即使 Excel 文件中只有一张表,我也必须说“确定”。在我单击“保存”按钮之前,原始 Word 文档不会关闭。有没有一种简单的方法可以在 vba 中实现自动化?

更新的代码是

子 OpenDocFileNewName() ' ' OpenDocFileNewName 宏 ' '

Set WordApp = CreateObject("Word.Application.8")

Set WordDoc = WordApp.Documents.Open("C:\Users\mmezzolesta\Documents\_TestDataMerge\STANDARD.docx")

WordApp.Visible = True

'
'mail merge
'

Data = "C:\Users\mmezzolesta\Documents\_TestDataMerge\test_table.xlsm"

WordDoc.MailMerge.OpenDataSource (Data)

WordDoc.MailMerge.Execute

'
'Sheets("Sheet1").Select

WordApp.ActiveDocument.SaveAs Filename:=("C:\Users\mmezzolesta\Documents\_TestMailMergeAuto") & "/" & Range("A2") & "Standard-Grounding-" & Range("e2").Text

WordApp.ActiveDocument.Close

WordApp.Quit

结束子'

于 2013-07-17T19:43:32.480 回答
0

在最新版本的 Word(默认使用 OLE DB 连接)中,您需要的主要内容是:

WordDoc.MailMerge.OpenDataSource Filename:=Data, _
SQLStatement:="SELECT * FROM [Sheet1$]"

然后你执行合并使用

WordDoc.MailMerge.Execute

如果您要合并到一个新文档,输出通常会变成 ActiveDocument。

你不应该需要这个来合并......

Sheets("Sheet1").Select
于 2013-07-16T08:02:21.290 回答