Доступ: Word Automation Верхние и нижние колонтитулы - PullRequest
0 голосов
/ 28 июня 2011

Я использую Access для отправки текста в Word через закладки. У меня есть закладки в верхних и нижних колонтитулах, но когда я пытаюсь отправить текст, появляется сообщение об ошибке: « Word не может найти запрошенную закладку. »

Я использую следующий код для отправки текста в Access

' Create a Word document from template.
Dim WordApp As Word.Application
Dim strTemplateLocation As String
Dim myVariable = “TEST!!”

' Specify location of template
strTemplateLocation = Left(CurrentDb.Name, InStrRev(CurrentDb.Name, "\")) & "test.dot"

Set WordApp = GetObject(, "Word.Application")
If Err.Number <> 0 Then
    Set WordApp = CreateObject("Word.Application")
End If

WordApp.Visible = True
WordApp.WindowState = wdWindowStateMaximize
WordApp.Documents.Add Template:=strTemplateLocation, NewTemplate:=False


' Replace each bookmark with field contents.
WordApp.Selection.GoTo what:=wdGoToBookmark, Name:="myBookmark"
WordApp.Selection.TypeText myVariable

DoEvents
WordApp.Activate
Set WordApp = Nothing

Я использую форматы файлов Office 2003.

1 Ответ

1 голос
/ 02 июля 2011

Во-первых, вы должны убедиться, что каждая закладка Word уникальна.Мы постоянно используем Access в качестве механизма автоматизации для Word, и это может быть легкой ошибкой.Если сомневаетесь, удалите свою закладку в шаблоне Word и вставьте ее обратно.

Вот код, который поможет вам в этом.Давайте начнем с того, что объявим некоторые переменные, в частности документ Word, которые будут использоваться вместе с приложением Word, в качестве объектов, так как вы запаздываете с поздним связыванием.1007 *

Далее вы знаете, как настроить объект WordApp, но я бы настроил объект документа, чтобы дать мне больше гибкости.

Set objDoc = WordApp.Documents.Add Template:=strTemplateLocation, NewTemplate:=False

У меня обычно есть следующий раздел в подпрограмме, котораяЯ просто передаю имя и значение закладки в виде строк.Опять же, вы можете отправить одну и ту же переменную на любое количество закладок, но вы должны иметь уникальные имена закладок в шаблоне Word.

If objDoc.Bookmarks.Exists(sBookmark) = True Then

    objDoc.Bookmarks(sBookmark).SELECT
    WordApp.Selection = sValue

End If

Тогда у вас возникли проблемы с тем, как вы нашлиСлово, когда вы открыли его.Я предпочитаю вернуть все в «нормальное состояние», если оно есть.:)

With WordApp

    If .ActiveWindow.View.SplitSpecial <> 0 Then
        .ActiveWindow.Panes(2).Close
    End If

    If .ActiveWindow.ActivePane.View.Type = 1 Or .ActiveWindow.ActivePane.View.Type = 2 Then
        .ActiveWindow.ActivePane.View.Type = 3
    End If

    .ActiveWindow.ActivePane.View.SeekView = 0

End With
...