Я пытался «обойти» предупреждение Select From Sheet1$
, которое появляется, когда вы выполняете слияние документа Word с документом Excel.
Я попытался сохранить каждый документ «без прикрепленного источника данных, но изменил код VBA в каждом документе, чтобы сделать соответствующий OpenDataSource», как указано в Excel VBA для автоматического выбора Да при запросе во время слияния
Но все же Word запрашивает выбор Sheet1$
.
Кроме того, DisplayAlerts=0
у меня не работает. Я предполагаю, что так же, как @Ashton Sheets: «У меня проблема с размещением. Когда я установил wdDoc.DisplayAlerts = 0
ДО того, как я установил wdDoc = GetObject(wdInputName, "Word.document")
, это, очевидно, не работает, потому что wdDoc
не установлено. Но если я поставлю его сразу после строка слишком поздно, потому что слово открывается только ТОГДА, и именно тогда появляется сообщение, поэтому «слишком поздно», как указано в Как использовать VBA, чтобы сказать "Да" любым запросам SQL в word?
Идея этого кода состоит в том, чтобы избежать любых возможных ошибок со стороны пользователей. Поэтому необходимо минимальное количество «кликов» от оператора. Включая MsgBox
с...
Также важно отметить, что для программирования я использую Office 2007. И HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Word\Options
не вариант из-за нескольких пользователей и компьютеров, которые будут использовать код.
Вот пример Кодекса:
Option Explicit
Sub wrd()
Dim name As String
Dim wrdapp As Word.Application
Dim wrddoc As Word.Document
Set wrdapp = CreateObject("word.application")
wrdapp.Visible = True
'wrdapp.DisplayAlerts = False
Word.Application.DisplayAlerts = False
Set wrddoc = wrdapp.Documents.Open("C:\............\3.2_CTO. A.FIN..docx")
With wrddoc
'.Application.DisplayAlerts = wdAlertsNone
.MailMerge.OpenDataSource ("C:\.......\3.1_Base de datos_FIN.xlsx")
.MailMerge.HighlightMergeFields = True
.MailMerge.ViewMailMergeFieldCodes = False
.MailMerge.DataSource.ActiveRecord = wdLastDataSourceRecord
name = Hoja14.Range("a2")
.SaveAs ("C:\...........\Clientes\Persona Física\Cto. " & (tipo) & "# " & (name) + ".docx")
wrdapp.Quit
Set wrddoc = Nothing
Set wrdapp = Nothing
Application.DisplayAlerts = True
End With
End Sub