VBA MS-Word - режим совместимости: = XX - именованный аргумент не найден - PullRequest
0 голосов
/ 09 февраля 2019

У меня изначально была некоторая помощь в написании этого, и оно было написано на машине с 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
...