Код VBA для заполнения полей Word из Access срабатывает только через раз - PullRequest
0 голосов
/ 09 ноября 2018

Я относительно новичок в Access, но на этой неделе я пытался собрать пакет, чтобы разослать письма нашим сотрудникам.

Поток выглядит следующим образом: Форма заполнена при Доступе> Данные сохранены в Таблице> Соответствующие поля объединены в Словарные шаблоны

Кажется, у меня есть некоторые проблемы с кодом VBA, который переносит данные в Word. Я нашел этот код в Интернете, и хотя он работает, он работает только каждый ДРУГОЙ раз. Я пытался вырезать биты и пока не увенчался успехом. То, как он последовательно работает в любом другом случае, кажется несколько странным. Я нашел много ссылок на это явление в Интернете, но они, как правило, относятся к Excel, и я не нашел решения, которое еще работает. Код, указанный ниже для справки.

Заранее спасибо всем, кто может пролить свет на это.

Джо

Private Sub Command280_Click()

'Print customer slip for current customer.
Dim appWord As Word.Application
Dim doc As Word.Document
'Avoid error 429, when Word isn't open.
On Error Resume Next
Err.Clear
'Set appWord object variable to running instance of Word.
Set appWord = GetObject(, "Word.Application")
If Err.Number <> 0 Then
'If Word isn't open, create a new instance of Word.
Set appWord = CreateObject("Word.Application")
End If
Set doc = appWord.Documents.Open("filepath-to-document.docx", , True)
With doc
.FormFields("txtFirstName").Result = Me![First Name]
.FormFields("txtFirstName2").Result = Me![First Name]
.FormFields("txtLastName").Result = Me![Last Name]
.FormFields("txtReasonforReward").Result = Me![Reason for Reward]
.FormFields("txtCompanyValue").Result = Me![Company Value]
.FormFields("txtRequestingManager").Result = Me![Requesting Manager]
.FormFields("txtLocation").Result = Me![Location]
.Visible = True
.Activate
End With
Set doc = Nothing
Set appWord = Nothing
Exit Sub
errHandler:
MsgBox Err.Number & ": " & Err.Description

End Sub

В ответ на некоторые комментарии я изменил свой код следующим образом, однако этот код не имеет управления ошибками и вызывает открытие документов в веб-представлении (?):

Private Sub Command280_Click()
Dim objWord As Object
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Set doc = objWord.Documents.Add("FilePath.docx", , True)
With doc
.FormFields("txtFirstName").Result = Me![First Name]
.FormFields("txtFirstName2").Result = Me![First Name]
.FormFields("txtLastName").Result = Me![Last Name]
.FormFields("txtReasonforReward").Result = Me![Reason for Reward]
.FormFields("txtCompanyValue").Result = Me![Company Value]
.FormFields("txtRequestingManager").Result = Me![Requesting Manager]
.FormFields("txtLocation").Result = Me![Location]
.Visible = True
.Activate
End With
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...