Обозначенный вопрос был мной озвучен в разделе "Программирование", выкладываю здесь оформленный и опробованный код. Вдруг кому понадобится. В своей практике использую второе решение выполняя действия по "Включению" и "Отключению" библиотеки в зависимости от того какое окно активно. Это позволяет не вмешиваться в работу файлов не имеющих отношения к моей библиотеке.
ВАЖНО: для документа указывается
имя файла без расширения, а для библиотеки
название, оно задается в свойствах и ничего общего с именем файла не имеет.
Задача: определить подключение к документу определенной библиотеки
Решение №1: здесь проверяется именно связь документа и библиотеки
Код:
Sub Test01()
If IsDocumentConnectVSS(Application.Windows, "Имя документа без расширения", "Название библиотеки, не файла!") Then
' Код который необходимо выполнить, если для указанного документа подключена указанная библиотека
End If
End Sub
Function IsDocumentConnectVSS(ByVal AppWindows As IVWindows, DocName As String, VSSCaption As String)
IsDocumentConnectVSS = False
' Перебираем все подчиненные окна(в том числе документы) для указанного документа в поиске подключенной библиотеки
For Each Wnd In AppWindows.ItemEx(DocName).Windows
' Проверяем подключена ли библиотека к документу
If Wnd.Caption = VSSCaption Then
IsDocumentConnectVSS = True
Exit For
End If
Next Wnd
End Function
Решение №2: в моей ситуации проверку было удобней производить при смене окна, для этого можно применить следующий код
Код:
Public WithEvents MyApplication As Visio.Application
Private Sub MyApplication_ViewChanged(ByVal Window As IVWindow)
If IsConnectVSS(Window, "Название библиотеки, не файла!") Then
' Код который необходимо выполнить, если активно окно документа в котором подключена библиотека
Else
' Код который необходимо выполнить, если активно окно любого другого документа не имеющего отношения к библиотеке
End If
End Sub
Function IsWindowConnectVSS(ByVal Window As IVWindow, VSSCaption As String) As Boolean
IsConnectVSS = False
' Перебираем все подчиненные окна(в том числе документы) в поиске подключенной библиотеки
For Each Wnd In Window.Windows
' Проверяем подключена ли библиотека к документу
If Wnd.Caption = VSSCaption Then
IsConnectVSS = True
Exit For
End If
Next Wnd
End Function