Справочная информация. Существует электронная таблица Excel с двумя столбцами: имя и сумма, а также шаблон Word Mail Merge, который использует эти два столбца.Предполагается, что этот макрос перебирает все строки в электронной таблице и сохраняет PDF для каждой строки.
При попытке сохранить PDF
у меня появляется ошибкаObject не поддерживает это свойство или метод "
в этой строке
objWord.ActiveDocument.ExportAsFixedFormat cDir + "\Letters\" + NewFileName, 17
Я новичок, который сделал это вместе, основываясь на других сообщениях.Спасибо этому сообществу за то, что он дал мне это, и я благодарен за любую помощь в устранении этой ошибки.
Sub GenerateLetters()
Dim bCreatedWordInstance As Boolean
Dim PracticeName As String
Dim cDir As String
Dim r As Long
Dim ThisFileName As String
r = 2
lastrow = Sheets("Data").Range("A" & Rows.Count).End(xlUp).Row
For r = 2 To lastrow
PracticeName = Sheets("Data").Cells(r, 1).Value
' Setup filenames
Const WTempName = "Letter.docx"
Dim NewFileName As String
NewFileName = PracticeName & ".pdf"
' Setup directories
cDir = ActiveWorkbook.Path + "\" 'Change if appropriate
ThisFileName = ThisWorkbook.Name
On Error Resume Next
' Create a Word Application instance
bCreatedWordInstance = False
Set objWord = GetObject(, "Word.Application")
If objWord Is Nothing Then
Err.Clear
Set objWord = CreateObject("Word.Application")
bCreatedWordInstance = True
End If
If objWord Is Nothing Then
MsgBox "Could not start Word"
Err.Clear
On Error GoTo 0
Exit Sub
End If
' Let Word trap the errors
On Error GoTo 0
' Set to True if you want to see the Word Doc flash past during construction
objWord.Visible = False
'Open Word Template
Set objMMMD = objWord.Documents.Open(cDir + WTempName)
objMMMD.Activate
'Merge the data
With objMMMD
.MailMerge.OpenDataSource Name:=cDir + ThisFileName, sqlstatement:="SELECT * FROM `Data$`" ' Set this as required
With objMMMD.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = r - 1
.LastRecord = r - 1
.ActiveRecord = r - 1
End With
.Execute Pause:=False
End With
End With
' Save new file as PDF
objWord.ActiveDocument.ExportAsFixedFormat cDir + "\Letters\" + NewFileName, 17
' Close the Mail Merge Main Document
objMMMD.Close savechanges:=wdDoNotSaveChanges
Set objMMMD = Nothing
' Close the New Mail Merged Document
If bCreatedWordInstance Then
objWord.Quit
End If
Next r
End Sub