Как запретить пользователям сохранять документ Word как другой файл - PullRequest
1 голос
/ 11 июля 2019

Обязательное поле перед сохранением документа Microsoft Word.

Public Sub FileSave()
    Dim orng As Word.Range
    Dim ofld As FormFields

    Set orng = ActiveDocument.Range
    Set ofld = orng.FormFields

    For i = 1 To ofld.Count
        ofld(i).Select
        If ofld(i).Result = "" Then
            MsgBox "Please ensure that all are filled."
            Exit Sub
        End If
    Next i

    ActiveDocument.Save
End Sub

Этот код запрещает сохранение документа без заполнения формы. Это не мешает пользователям сохранять документ в другом формате. Как мне изменить его, чтобы пользователи также не могли сохранить его как другой документ?

Чтобы обеспечить некоторый контекст, ранее у меня был другой код на уровне модуля, который запрещал пользователям сохранять документ в другом формате. Проблема также в том, что пользователи вообще не могут сохранить документ. Я пытаюсь найти решение, которое не позволит пользователям сохранять другое имя и / или формат и позволяет им сохранять документ только после заполнения всех обязательных полей. Если пользователи деактивируют макросы, документ для них практически бесполезен, так что это не проблема. Мой запрос относится к тому, когда пользователь включает макросы и получает доступ к документу

Private WithEvents App As Word.Application

Private Sub Document_Open()
    Set App = Word.Application
End Sub

Private Sub App_DocumentBeforeSave(ByVal Doc As Document, SaveasUI As Boolean, Cancel As Boolean)
    Cancel = True
    MsgBox ("You are not allowed to save this file as another document")
End Sub

1 Ответ

2 голосов
/ 11 июля 2019

Вам просто нужно проверить на If SaveAsUI Then и отменить, только если SaveAsUI равно True:

Option Explicit

Private WithEvents App As Word.Application

Private Sub Document_Open()
    Set App = Word.Application
End Sub

Private Sub App_DocumentBeforeSave(ByVal Doc As Document, SaveAsUI As Boolean, Cancel As Boolean)
    If SaveAsUI Then
        Cancel = True
        MsgBox ("You are not allowed to save this file as another document")
    End If
End Sub

Но учтите, что это совсем не безопасно и может быть легко обмануто.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...