События и процессы уровня приложения в Excel ограничены одним экземпляром приложения.
В прошлом я запрещал пользователям открывать более одного экземпляра Excel, когда моя надстройка работает с использованием следующего кода.
Private Sub KillDuplicateProcesses()
Dim objWMIService As Object
Dim colItems As Variant
Dim objItem As Object
Dim intCount As Integer
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colItems = objWMIService.InstancesOf("Win32_Process")
For Each objItem In colItems
intCount = intCount + Abs(LCase(objItem.Name) = "excel.exe")
Next
If intCount > 1 Then
MsgBox "Excel is already running.", vbCritical
Application.Quit
End If
Set objWMIService = Nothing
Set colItems = Nothing
End Sub
Однако мне интересно, есть ли способ безопасного запуска надстройки, когда запущено несколько экземпляров Excel.
Например, если я сделаю что-то подобное в VBA:
Application.MoveAfterReturnDirection = xlDown
Это изменение и любые изменения объектов CommandBar должны отражаться во всех экземплярах Excel, каждый со своим окном, одновременно.
Спасибо!