Автоматизация слов: нередактируемые - PullRequest
0 голосов
/ 29 июня 2011

Я использую Access для отправки данных в шаблон, который я создал в Word. После того, как он успешно отправит данные, мне нужно сделать открытый документ Word НЕ редактируемым.

Кроме того, я замечаю, что после того, как я закончу с Документом, он предложит сохранить. Можно ли удалить это приглашение, НО разрешить возможность сохранения.

Это код, который я использую для автоматизации Word:

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

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

Set WordApp = CreateObject("Word.Application")

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

Ответы [ 2 ]

1 голос
/ 30 июня 2011

Объект Document имеет свойство Saved, которое обычно изменяется на False, если вносятся какие-либо изменения. Если для этого свойства установлено значение True, вам не будет предложено сохранить документ при его закрытии, но вы все равно сможете сохранить его вручную (через Save или Save As...), если хотите.

Вы можете использовать метод Protect объекта Document, чтобы ограничить изменения, которые может сделать пользователь. Например, вы можете вызвать его с параметром wdAllowOnlyReading, который будет означать, что никакие изменения не могут быть сделаны. Вам также может понадобиться защита паролем документа, чтобы пользователь не мог снова снять его с защиты

0 голосов
/ 29 июня 2011

Это должно делать то, что вам нужно.Протестировано в Excel, а не в Access, поэтому вам нужно исправить путь к шаблону

Sub Tester()
    ' Create a Word document from template.
    Dim WordApp As Word.Application
    Dim strTemplateLocation As String
    Dim myVariable As String

    myVariable = "TEST!!"
    ' Specify location of template
    strTemplateLocation = ThisWorkbook.Path & "\test.dotx"
    Set WordApp = CreateObject("Word.Application")
    With WordApp
        .Visible = True
        .WindowState = wdWindowStateMaximize
        .Documents.Add Template:=strTemplateLocation, NewTemplate:=False

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

        DoEvents

        With .ActiveDocument
            .Protect Type:=wdAllowOnlyReading, Password:="blah"
            .Saved = True
        End With

        .Activate
    End With

    Set WordApp = Nothing

End Sub
...