Как запустить надстройку Excel на экземплярах Mutliple в Excel.exe - PullRequest
0 голосов
/ 03 декабря 2009

События и процессы уровня приложения в 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, каждый со своим окном, одновременно.

Спасибо!

Ответы [ 2 ]

1 голос
/ 03 декабря 2009

Вы мешаете людям открывать новый экземпляр Excel, чтобы ваш плагин работал! - Отлично !!!!

Идея Чарльза хороша, она похожа на глобальные переменные в разных экземплярах. Точно так же вы можете записывать в файл .ini и ссылаться на него каждый раз.

Это зависит от того, что вы делаете, но вы уверены, что хотите, чтобы настройки были одинаковыми во всех случаях? Может быть, я хочу иметь разные настройки в каждом?

1 голос
/ 03 декабря 2009

Я бы предположил, что ваш плагин использует реестр для хранения настроек, которые вы хотите сохранить и применить ко всем сеансам Excel. Затем надстройка будет использовать событие уровня приложения, такое как workbook.activate, для проверки сохраненных настроек реестра.

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