Если я правильно выполняю требование, я думаю, что было бы целесообразно разделить его на две процедуры: одну для обработки цикла (не видно в коде в вопросе), другую для обработки слияния. Что-то вроде фрагментов кода ниже.
Процедура «верхнего уровня», которая обрабатывает цикл и все, что Excel (извлечение кода, на основе содержимого, о котором идет речь):
With wdApp
.Visible = False
Set wdDoc = .Documents.Open(filePath & firstDoc)
Set wdDoc1 = .Documents.Open(filePath & otherDoc)
'Added Code
strWorkbookName = ThisWorkbook.Path & "\" & ThisWorkbook.Name
ExecuteMailMerge wdDoc, strWorkbookName, loopRow, _
newFilePath, newFolderName, firstDoc
ExecuteMailMerge wdDoc1, strWorkbookName, loopRow, _
newFilePath, newFolderName, otherDoc
Процедура обработки слияния :
Sub ExecuteMailMerge(wdDoc As Object, strWorkbookName as String, loopRow as Long, _
newFilePath as String, newFolderName as String, docName as String)
With wdDoc.MailMerge
.MainDocumentType = wdFormLetters
.OpenDataSource _
Name:=strWorkbookName, _
AddToRecentFiles:=False, _
Revert:=False, _
Format:=wdOpenFormatAuto, _
Connection:="Data Source=" & strWorkbookName & ";Mode=Read", _
SQLStatement:="SELECT * FROM [Sheet1$]"
.Destination = wdSendToNewDocument
With .DataSource
.FirstRecord = loopRow - 1
.LastRecord = loopRow - 1
.ActiveRecord = loopRow - 1
End With
.Execute Pause:=False
End With
Set TargetDoc = wdApp.ActiveDocument
TargetDoc.SaveAs2 Filename:=newFilePath & "\" & newFolderName & "- " & docName & ".docx"
wdDoc.Close SaveChanges:=False
End Sub