0
我试图完成我的宏,但我不知道如何从我准备好的Excel表(我的表中的每一行= signle文档)进行邮件合并。我写了这个宏,但它没有运行。第二件事是最后的文件必须是PDF格式,我不知道要调整它。使用宏VBA创建单独的pdf从excel表中创建个人pdf
Sub RunMerge()
Dim wd As Object
Dim wdocSource As Object
Dim strWorkbookName As String
On Error Resume Next
Set wd = GetObject(, "Word.Application")
If wd Is Nothing Then
Set wd = CreateObject("Word.Application")
End If
On Error GoTo 0
Set wdocSource = wd.Documents.Open(ThisWorkbook.Path & "\" & "ArtSpecDatabase.docx")
strWorkbookName = ThisWorkbook.Path & "\" & ThisWorkbook.Name
wdocSource.MailMerge.MainDocumentType = wdFormLetters
wdocSource.MailMerge.OpenDataSource _
Name:=strWorkbookName, _
AddToRecentFiles:=False, _
Revert:=False, _
Connection:="Data Source=" & strWorkbookName & ";Mode=Read", _
SQLStatement:="SELECT * FROM `Sheet2$`"
With wdocSource.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=False
End With
Dim PathToSave As String
PathToSave = ThisWorkbook.Path & "\" & "docs" & "\" & Sheets("Sheet2").Range("B2").Value2 & ".docx"
'PathToSave = "C:\Users\admin\Desktop\New folder (2)\docs\Merge_Mail_" & Replace(Replace(Now(), "/", "-"), ":", ".") & ".docx"
If Dir(PathToSave, 0) <> vbNullString Then
wd.FileDialog(FileDialogType:=msoFileDialogSaveAs).Show
Else
wd.ActiveDocument.SaveAs2 PathToSave, wdFormatDocumentDefault
End If
wdocSource.Close SaveChanges:=False
Set wdocSource = Nothing
Set wd = Nothing
End Sub
如何在不运行它?它失败了吗?如果是这样,在哪里?你使用的是什么版本的Word和Excel? – DanL
它运行,但我需要设置一个发生。这个宏只创建一个文档,我需要每行的一个文档。其次,它将文档保存为word .doc文件而不是pdf。我正在使用excel 2010 – Jean
由于您将文件名设置为“.docx”,因此宏创建word文档 - 应使用适当的文件扩展名。另外 - 如果你想为每一行创建一个文档,那么你将不得不遍历行并调用每行的makro。 – therak