Событие Word DocumentBeforeClose иногда не работает - PullRequest
0 голосов
/ 24 октября 2018

Я поддерживаю связанный с Word проект vb6.Когда мы загружаем текстовый документ с нашего сервера и вносим в него изменения.Затем нажмите Закрыть.

Тогда наступит событие objWord_DocumentBeforeClose.Если загруженный файл не был загружен обратно на сервер, мы выводим окно с сообщением «да / нет» Do you want to check-in the document?

Если нажать «Да» и еще раз нажать ctrl+w до завершения процесса регистрации, документ закроется без достижения события mobjWord_DocumentBeforeClose.

Я добавил некоторый код в событие DocumentBeforeClose, чтобы предотвратить закрытие документа, если процесс регистрации выполняется с использованием переменных документа.

Может кто-нибудь объяснить, почему mobjWord_DocumentBeforeClose не достигает второго щелчка?

Ниже мой код.

Private Sub mobjWord_DocumentBeforeClose(ByVal Doc As Document, Cancel As Boolean)

Dim objDoc As Project.Document
Dim objApp As Project.Application
Dim strProcess As String

Set objApp = New Project.Application
If objApp.Settings.RespondToWordEvents Then
    Set objDoc = objApp.GetDocument(Doc)
    'Check the document variable to seen if any process is running with the document
   If objDoc.IsBusy = False Then
        if objDoc.NotCheckedIn
             If objDoc.DownloadProperties.WasCheckedOut Then
                Select Case MsgBox("Do you want to check-in the document?", vbYesNoCancel + vbQuestion)
                    Case vbYes
                        If objApp.CheckInDocument(WordDocument:=Doc) Is Nothing Then
                            Cancel = True
                        End If
                        fDisebleCheckIn = True
                    Case vbNo
                        fDisebleCheckIn = True
                    Case vbCancel
                        Cancel = True
                End Select
            End If
        Else
            //some code
        End If
    Else
        Cancel = True
        strProcess = ProcessInProgress(objDoc, objApp)
        MsgBox objApp.GetUIString("Unable to close the document " + strProcess + "process is running"), vbOKOnly + vbInformation
    End If
End If

ErrorHandler:
    objApp.Quit
    Set objDoc = Nothing
    Set objApp = Nothing

End Sub

1 Ответ

0 голосов
/ 24 октября 2018

Я не уверен, что полностью вас понимаю, но в VBA, чтобы вы могли адаптироваться к вашему VB6, у меня было бы следующее в обычном модуле

Public wdCustomWordApplication As clsCustomWordApplication

Sub Setup()

Dim w As Word.Application

Set w = New Word.Application
w.Visible = True

Set wdCustomWordApplication = New clsCustomWordApplication
wdCustomWordApplication.InitialiseCustomWordApplication w

End Sub

, а затем в модуле класса с именем clsCustomWordApplication,вот так

Private WithEvents wdWordApplication As Word.Application

Public Sub InitialiseCustomWordApplication(objWord As Word.Application)
    Set wdWordApplication = objWord
End Sub

Private Sub wdWordApplication_DocumentBeforeClose( _
    ByVal Doc As Word.Document, Cancel As Boolean)
    MsgBox "Some question"
End Sub

Надеюсь, это поможет.

...