Отвечать или подавлять приглашения на слияние с Word Mail с доступом vba
Я использую Office 2013. В моей базе данных Access много таблиц, которые через ODBC связаны с базой данных Oracle. У меня есть модуль Access, который выполняет запрос параметров, экспортирует результаты в электронную таблицу Excel и открывает существующее письмо слияния Word с таблицей, установленной в качестве источника данных слияния. Кроме того, в целях очистки после себя, а также во избежание потенциального многопользовательского конфликта, каждый раз, когда электронная таблица создается, ей присваивается уникальное имя и она удаляется после завершения слияния. Этот процесс работает успешно каждый раз, когда я запускаю его, НО каждый раз, когда я запускаю его, я получаю несколько подсказок от Word, которые я не знаю, как обрабатывать программно, чтобы пользователям не приходилось нажимать эти подсказки при каждом запуске этого модуля., Вот с чем мне нужна помощь.
Вот мой код (извините, если он слишком длинный, первый постер). Подсказки, которые мне нужно решить, перечислены после кода:
Option Compare Database
Option Explicit
Private Const sPath = "\\MyNetworkPath\Development\" 'development path
'Private Const sPath = "\\MyNetworkPath\" 'production path
Public Sub RunMailMerge(dataFile As String, mergeFile As String)
On Error GoTo Sub_Error
Dim sMergeFile As String
Dim sDataFile As String
Dim objWordDoc As Word.Document
sDataFile = dataFile
sMergeFile = mergeFile
On Error GoTo Sub_Error
Set objWordDoc = GetObject(sMergeFile, "Word.Document")
objWordDoc.Application.Visible = True
objWordDoc.MailMerge.OpenDataSource _
Name:=sDataFile, ConfirmConversions:=False, _
ReadOnly:=False, LinkToSource:=True, AddToRecentFiles:=False, _
PasswordDocument:="", PasswordTemplate:="", WritePasswordDocument:="", _
WritePasswordTemplate:="", Revert:=False, Format:=wdOpenFormatAuto, _
Connection:="", SQLStatement:="", SQLStatement1:=""
objWordDoc.MailMerge.Destination = wdSendToNewDocument
objWordDoc.MailMerge.Execute
Sub_Exit:
On Error Resume Next
' save and close the merge template
objWordDoc.Save
objWordDoc.Close SaveChanges:=wdSaveChanges
Set objWordDoc = Nothing
' clean up the merge data file
AttemptToDeleteFile (sDataFile)
Exit Sub
Sub_Error:
If Err.Number = 432 Then
MsgBox "ERROR: Invalid filename provided: '" & sDataFile & "' or " & _
"'" & sMergeFile & "'."
Else
MsgBox Err.Description
End If
Resume Sub_Exit
End Sub
'attempt to delete the mailmerge data file
Private Sub AttemptToDeleteFile(strFilename As String)
On Error GoTo Sub_Error
Kill strFilename
Sub_Exit:
Exit Sub
Sub_Error:
If Err.Number = 53 Then 'err 53 = file not found, that means the file is already deleted!
'no error, continue
Resume Sub_Exit
ElseIf MsgBox("Cannot delete file. Close all Word mailmerge documents and click Retry.", vbRetryCancel + vbExclamation, "File In Use") = vbRetry Then
Resume
Else
On Error GoTo 0
Err.Raise vbObjectError + 1024 + 1, "file in use", "File In Use@" & _
"Cannot complete the mailmerge process because the file '" & strFilename & "' " & _
"is in use. Close all Word mailmerge documents and try again."
End If
End Sub
Function OpenProjectAknowledgementLetter()
On Error GoTo OpenProjectAknowledgementLetter_Err
Dim sDataFile As String
Dim sMergeFile As String
sDataFile = sPath & "Acknowledgement\ProjAckgtLtr_" & Format(Now(), "yyyymmddhhnnss") & ".xls"
sMergeFile = sPath & "Acknowledgement\Acknowledgement_Merge_Letter.docx"
Debug.Print "Data file: " & sDataFile
'Debug.Print "Merge file: " & sMergeFile
' run the query and populate the data file for the merge letter
DoCmd.OutputTo acOutputQuery, "qselProjectAknowledgementLetter", "Excel97-Excel2003Workbook(*.xls)", sDataFile, False, "", , acExportQualityPrint
Call RunMailMerge(sDataFile, sMergeFile)
OpenProjectAknowledgementLetter_Exit:
Exit Function
OpenProjectAknowledgementLetter_Err:
MsgBox Error$
Resume OpenProjectAknowledgementLetter_Exit
End Function
Запросы Word, которые необходимо обработать:
Открытие этого документа приведет к выполнению следующей команды SQL: [оператор выбора]. Данные из вашей базы данных будут размещены в документе. Вы хотите продолжить? Да нет
При выборе Да появляется следующее сообщение:
Извините, мы не смогли найти [ранее использованное имя файла источника данных]. Возможно ли это было перемещено, переименовано или удалено? Хорошо
Нажатие ОК создает диалоговое окно открытия файла для выбора источника данных. Нажатие кнопки "Отмена" в этом диалоговом окне возвращает к документу слияния, который затем отображает приглашение "Выбрать таблицу" с выбранным именем листа.
Нажатие OK в этом приглашении позволяет модулю кода продолжить без дальнейших запросов. Письмо объединяется с новым документом, документ объединения сохраняется и закрывается, а файл источника данных удаляется.
Очевидно, что Word принимает недавно назначенный файл источника данных и успешно завершает слияние. Как мне сказать Word пропустить все эти подсказки и просто продолжать?