3

Когда MATLAB R2015b взаимодействует с Excel, он открывает один процесс Excel и затем сохраняет процесс открытым, пока MATLAB не будет закрыт. Когда это происходит, если я пытаюсь открыть электронную таблицу через проводник, она открывается в экземпляре Excel без загруженных надстроек. Кроме того, файлы, открытые таким образом, не будут автоматически сохраняться или запрашивать сохранение у пользователя при выходе.

Если я открою приложение Excel через меню «Пуск», полный Excel загружается со всеми надстройками. Даже после того, как я это сделаю, открытие новых файлов через проводник откроется в версии, отключенной надстройкой. Есть ли способ заставить Excel открывать файлы в версии Excel с включенными надстройками?

В настоящее время я использую Office 2013, MATLAB R2015b и Windows 7.

ОБНОВЛЕНИЕ: я нашел сообщение об ошибке и патч MATLAB для части этой проблемы. Это здесь: https://www.mathworks.com/support/bugreports/1325577.

1 ответ1

3

Это зависит от типа надстройки. В основном вы можете иметь надстройки Excel (обычно написанные на VBA) и надстройки COM, которые могут быть написаны на любом языке, который понимает COM. Это также может зависеть от того, где установлена надстройка.

Надстройки Excel в определенных каталогах можно найти и открыть автоматически. Распространенным местом установки надстроек Excel является C:\Users\\AppData\Roaming\Addins. Если надстройка Excel хранится здесь, ее можно открыть на вкладке Файл-> Параметры-> Надстройки в Excel или на вкладке Разработчик, если вы ее включили. После включения надстройки в любом месте она обычно загружается при каждом запуске Excel.

Надстройки COM устанавливаются с помощью установщика, который размещает ссылку на надстройку в реестре. Excel просматривает в реестре эти надстройки при открытии. Два местоположения, которые я описал выше, также содержат списки надстроек COM, и их можно включить через эти списки.

Кроме того, вы можете заставить книгу открыть надстройку из VBA. Когда ваша рабочая книга открыта, выполняется подпрограмма с именем Workbook_Open. Такой код заставит надстройку быть установленным.

Sub Workbook_Open()
    Const addinName as String = "insert the name of your add-in"

    If Not AddinLoaded(addinName) Then
        If AddinAvailable(addinName) Then
            On Error Resume Next
                Application.AddIns2(addinName).Installed = True
            On Error GoTo 0
        End If
    End If
End Sub

Function AddinAvailable(addinName As String) As Boolean
    Dim ad As AddIn

    On Error Resume Next
        Set ad = Application.AddIns2.Item(addinName)
    On Error GoTo 0

    AddinAvailable = Not ad Is Nothing
End Function

Function AddinLoaded(addinName As String) As Boolean
    Dim ad As AddIn, errNumber As Long

    On Error Resume Next
        Set ad = Application.AddIns2.Item(addinName)
        errNumber = Err.Number
    On Error GoTo 0

    If Not ad Is Nothing Then
        If errNumber = 0 Then AddinLoaded = ad.Installed And ad.IsOpen
    End If
End Function

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .