Слияние в PDF из списка Excel - PullRequest
       2

Слияние в PDF из списка Excel

0 голосов
/ 27 ноября 2018

Справочная информация. Существует электронная таблица 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...