Я работаю над файлом Excel, который открывает исходный документ (слово), который я хочу сохранить под другим именем, но с макросами из источника.
Открытие файла не является проблемой, но после этого слияния (я использую mailmerge) и изменения имени исходного документа макросы исчезли (даже перед сохранением в .docm). В исходном документе макрос доступен после слияния.
Любые идеи, как это исправить?
Код, который я использую, это:
Dim wd As Object
Dim wdocSource As Object
Dim strWorkbookName As String
Dim DocSrc As String
Dim number As String
number = CStr(ActiveWorkbook.Sheets("MailMerge").Cells(2, 5))
Const wdFormLetters = 0, wdOpenFormatAuto = 0
Const wdSendToNewDocument = 0, wdDefaultFirstRecord = 1, wdDefaultLastRecord = 1
'If Len(Dir("<directory>" & number, vbDirectory)) = 0 Then MkDir "<directory>" & number
fileSaveName = "X:\SAVENAME.docm"
On Error Resume Next
Set wd = GetObject(, "Word.Application")
If wd Is Nothing Then
Set wd = CreateObject("Word.Application")
End If
On Error GoTo 0
Set wdocSource = wd.Documents.Open("<directroy>\Test.docm")
strWorkbookName = ThisWorkbook.Path & "\" & ThisWorkbook.Name
wdocSource.MailMerge.MainDocumentType = wdFormLetters
wdocSource.MailMerge.OpenDataSource _
Name:=strWorkbookName, _
AddToRecentFiles:=False, _
Revert:=False, _
Format:=wdOpenFormatAuto, _
Connection:="Data Source=" & strWorkbookName & ";Mode=Read", _
SQLStatement:="SELECT * FROM `MailMerge$` "
With wdocSource.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=False
End With
wd.Visible = True
' wdocSource.Close SaveChanges:=False
'wd.ActiveDocument.SaveAs fileSaveName
'wd.ActiveDocument.Close
Set wdocSource = Nothing
Set wd = Nothing