Тема: Робота події WithEvents App As Word.Application в VBA

Добридень, форумчани.
Допоможіть розібратися в ситуації. При закритті документа в Ворді-2007, працює процедура AutoClose, яка виконує ряд дій. Одна з цих дій - виклик події WithEvents App As Word.Application з клас-модуля, в якому я встановлюю блокування на закриття поточного документу:

Public WithEvents App As Word.Application

    Private Sub App_DocumentBeforeClose (ByVal Doc As Document, Cancel As Boolean)
        'Cancel = True' скасування закриття документа
        'Cancel = False' дозвіл закриття документа
       
        If Doc.Name = "Назва документа" Then
            Cancel = True 'заборона закриття документа
            MsgBox "Документ заблокований для закриття"
        End If
    End Sub

Але суть у тому, що процедура AutoClose, відпрацювавши, як раз таки закриває документ і щоб ця подія для даного документа спрацювала, необхідно знову відкрити цей же документ. Відкрити тільки-но закритий документ потрібно відразу ж поки користувач не почав інші дії і зробити це автоматично.
Можливо якось запрограмувати негайний виклик процедури відкриття цього документа після завершення роботи процедури AutoClose? Або тут потрібно шукати інше рішення?

Якщо вдасться вирішити це питання далі вже буду думати як запустити зворотний процес розблокування файлу.

2

Re: Робота події WithEvents App As Word.Application в VBA

Для чого взагалі існує заборона на закриття документа? Це дивно виглядає.

Але суть у тому, що процедура AutoClose, відпрацювавши, як раз таки закриває документ і щоб ця подія для даного документа спрацювала, необхідно знову відкрити цей же документ

В смислі процедура AutoClose (чи App_DocumentBeforeClose) спрацьовує ще й при відкритті документа?

3

Re: Робота події WithEvents App As Word.Application в VBA

Можливо якось запрограмувати негайний виклик процедури відкриття цього документа після завершення роботи процедури AutoClose? Або тут потрібно шукати інше рішення?

Як щодо виклику документу в разі його закриття за допомогою ShellExecute? Обгортка вінапі хвункції для вашого бейсика:


Private Declare Function ShellExecute Lib "shell32" _
    Alias "ShellExecuteA" (ByVal hwnd As Long, _
    ByVal lpOperation As String, ByVal lpFile As String, _
    ByVal lpParameters As String, ByVal lpDirectory As String, _
    ByVal nShowCmd As Long) As Long
     
    Private Const SW_SHOWNORMAL = 1
     
    Private Sub Form_Load()
      ShellExecute 0, vbNullString, _
      "mailto:callcenter@ssu.gov.ua", vbNullString, _
      vbNullString, SW_SHOWNORMAL
    End Sub
Подякували: Mister_Kovalski1

4 Востаннє редагувалося /KIT\ (08.07.2021 13:12:51)

Re: Робота події WithEvents App As Word.Application в VBA

`

5 Востаннє редагувалося Mister_Kovalski (07.10.2017 19:09:19)

Re: Робота події WithEvents App As Word.Application в VBA

0xDADA11C7 написав:

В смислі процедура AutoClose (чи App_DocumentBeforeClose) спрацьовує ще й при відкритті документа?

Процедура AutoClose спрацьовує тільки при закритті документу.

6

Re: Робота події WithEvents App As Word.Application в VBA

0xDADA11C7, дякую за наводку і приклад. Почитаю про ShellExecute.