邮件合并宏

时间:2013-07-15 19:20:00

标签: mailmerge

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

Sub 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

End Sub

2 个答案:

答案 0 :(得分:0)

最新版本的Word(默认情况下使用OLE DB进行连接)所需的主要内容是:

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

然后使用

执行合并
WordDoc.MailMerge.Execute

如果要合并到新文档,输出通常会成为ActiveDocument。

合并时你不应该这样......

Sheets("Sheet1").Select

答案 1 :(得分:0)

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

更新的代码是

Sub 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

End Sub     '