2013-07-15 135 views
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 [表Sheet 1 $]」

'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 

結束子

回答

0

您在Word的最新版本(使用OLE DB默認連接)需要的主要事情是:

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

然後執行使用

WordDoc.MailMerge.Execute 

合併,如果你正在合併到新文檔,輸出通常會成爲ActiveDocument。

你不應該需要這個合併...

Sheets("Sheet1").Select 
+0

子OpenDocFileNewName() – MelindaNC

+0

集WordApp =的CreateObject( 「Word.Application.8」) Set WordDoc = WordApp.Documents.Open(「C:\ Users \ mmezzolesta \ Document s \ _TestDataMerge \ STANDARD.docx「) WordApp.Visible = TrueData =」C:\ Users \ mmezzolesta \ Documents \ _TestDataMerge \ test_table.xlsm「 WordDoc.MailMerge.OpenDataSource Filename:= Data,SQLStatement:=」SELECT * FROM [Sheet1 $]「 WordDoc.MailMerge.ExecuteWordMailMerge.Application.ActiveDocument.SaveAs Filename:=(」C:\ Users \ mmezzolesta \ Documents \ _TestMailMergeAuto「)&」/「&Range(」A2「)&」Standard-Grounding - 「&Range(」e2「)。Text WordApp.ActiveDocument.Close WordApp.Quit – MelindaNC

+0

Hi Bibadiak,我將文本行改爲WordDoc.MailMerge.OpenDataSource Filename:= Data,SQLStatement:=」SELECT * FROM [ Sheet1 $]「,仍然可以在此行停止調試。我是否留下太多空間或使用了錯誤的符號? – MelindaNC

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 

結束子 '