У меня изначально была некоторая помощь в написании этого, и оно было написано на машине с Windows 7 и работало нормально.У меня Office 2016 на моем Mac (OSX10.11.6), и макрос не работает на моем Mac.
Цель макроса - открыть новый документ из шаблона документа слияния, сохранить новый открытыйокно, закройте это новое окно, перейдите к следующей записи в шаблоне и повторяйте, пока она не достигнет конца списка получателей слияния (в Excel).
В настоящее время оно откроет новое окно, но не сохранити переход к следующей записи дает диалоговое окно Именованный аргумент не найден .Отладчик показывает эту строку как виновного:
SaveAsAOCELetter: = False, CompatibilityMode: = 14
Я удалил , CompatibilityMode:=14
, и макрос смог открыть новое окно, сохраните файл, закройте окно и перейдите к следующей записи в шаблоне, но не повторяйте процесс.
Как я могу заставить макрос не выдавать ошибку и перейти к следующей записи и повторить процесс?
Sub Start()
Dim i As Long
For i = 1 To ActiveDocument.MailMerge.DataSource.RecordCount
flet1
Next i
End Sub
Sub flet1()
'
' flet1 Makro
' 1) Merges active record and saves the resulting document named by the
datafield FileName"
' 2) Closes the resulting document, and (assuming that we return to the
template)
' 3) advances to the next record in the datasource
Dim DokName As String 'ADDED CODE
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = ActiveDocument.MailMerge.DataSource.ActiveRecord
.LastRecord = ActiveDocument.MailMerge.DataSource.ActiveRecord
' Remember the wanted documentname
DokName = .DataFields("FileName").Value ' ADDED CODE
End With
' Merge the active record
.Execute Pause:=False
End With
' Save then resulting document. NOTICE MODIFIED filename
ActiveDocument.SaveAs2
FileName:="/Users/username/Desktop/foldername/foldername2/foldername3/" +
DokName + ".docx", FileFormat:= _
wdFormatXMLDocument, LockComments:=False, Password:="",
AddToRecentFiles _
:=True, WritePassword:="", ReadOnlyRecommended:=False,
EmbedTrueTypeFonts _
:=False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
SaveAsAOCELetter:=False, CompatibilityMode:=14
' Close the resulting document
ActiveWindow.Close
' Now, back in the template document, advance to next record
ActiveDocument.MailMerge.DataSource.ActiveRecord = wdNextRecord
End Sub