我查看了使用宏执行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
答案 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 '