Como forçar o Excel a abrir documentos com suplementos quando outro aplicativo tiver aberto o processo do Excel?

3

Quando o MATLAB R2015b interage com o Excel, ele abre um processo do Excel e mantém o processo aberto até que o MATLAB seja fechado. Quando isso acontece, se eu tentar abrir uma planilha por meio do Gerenciador de arquivos, ele será aberto em uma instância do Excel sem que os suplementos sejam carregados. Além disso, os arquivos abertos dessa maneira não serão salvos automaticamente nem solicitarão ao usuário que salve na saída.

Se eu abrir o aplicativo Excel através do menu Iniciar, o Excel completo será carregado com todos os suplementos. Mesmo depois de ter feito isso, abrir novos arquivos no File Explorer será aberto na versão desabilitada do complemento. Existe uma maneira de forçar o Excel para abrir os arquivos na versão do Excel que tem add-ins habilitados?

Atualmente estou usando o Office 2013, o MATLAB R2015b e o Windows 7.

UPDATE: encontrei um relatório de bug e um patch do MATLAB para parte deste problema. É aqui: link .

    
por John 24.02.2016 / 20:40

1 resposta

3

Depende do tipo de suplemento. Basicamente você pode ter suplementos do Excel (geralmente escritos em VBA) e suplementos COM que podem ser escritos em qualquer idioma que entenda COM. Também pode depender de onde o suplemento está instalado.

Excel add-ins em determinados diretórios podem ser encontrados e abertos automaticamente. Um local comum para instalar os suplementos do Excel é em C: \ Users \\ AppData \ Roaming \ Addins. Se um suplemento do Excel estiver armazenado aqui, ele poderá ser aberto na guia Arquivo -> Opções - > Suplementos no Excel ou na guia Desenvolvedor, se você o tiver ativado. Depois que o suplemento tiver sido habilitado em qualquer lugar, ele geralmente será carregado sempre que o Excel for iniciado.

Os suplementos COM são instalados usando um instalador que coloca uma referência ao suplemento no registro. O Excel procura no registro por esses suplementos quando é aberto. Os dois locais que descrevi acima também contêm listas de suplementos COM e podem ser ativados por meio dessas listas.

Além disso, você pode forçar uma pasta de trabalho a abrir um suplemento do VBA. Quando sua pasta de trabalho é aberta, uma rotina chamada Workbook_Open é executada. Algum código como esse forçará o addin a ser instalado.

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
    
por 28.02.2016 / 05:10