Member 12644923 Ответов: 0

Проблема загрузки надстройки Excel


У меня есть надстройка master excel, которая загружается и запускается как часть Auto_Open электронной таблицы. Когда эта главная надстройка запускается, она загружает еще несколько надстроек:

Sub AddinLoad()

Dim addinFile As Variant
Dim fullName As String
Dim myAddin As AddIn
Dim AddinPath As String

Application.DisplayAlerts = False


AddinPath = Application.ThisWorkbook.Path & "\"
    Dim addinList As Variant
    addinList = getAddinList()
For Each addinFile In addinList
    fullName = AddinPath & addinFile
    loadAddin (fullName)
Next

For Each myAddin In AddIns
    Dim check As Long
    check = 0
    On Error Resume Next
    check = Application.Match(myAddin.Name, getAddinList(), 0)
    On Error GoTo 0
    If check <> 0 Then
        If myAddin.Installed = False Then
            myAddin.Installed = True
        End If
    End If
Next

Application.DisplayAlerts = True
End Sub




Public Function getAddinList() As Variant
    If addinListSup = "" Then
        getAddinList = Array("abc.XLL", "efg.XLA", "ddd.XLL", "ggg.XLA", "hhh.XLA")
    Else
        getAddinList = Split(addinListSup, ",")
    End If
End Function





Private Sub loadAddin(addinName As String)
Dim ext As String
Dim thisAddin As AddIn
Dim wbMyAddin As Workbook
Dim wbName As String

Application.DisplayAlerts = False
On Error Resume Next
ext = ""
wbName = ""
ext = UCase(Mid(addinName, InStrRev(addinName, ".") + 1, 3))
wbName = Right(addinName, Len(addinName) - InStrRev(addinName, "\"))
On Error GoTo 0

If ext = "" Or wbName = "" Then Exit Sub

On Error Resume Next
If ext = "" Then
    Exit Sub
ElseIf ext = "XLL" Then
    Application.AddIns.Add addinName, False
    Application.RegisterXLL (addinName)
ElseIf ext = "XLA" Then
    Set thisAddin = Application.AddIns.Add(addinName, False)    
    Set wbMyAddin = Workbooks(wbName)
    If Err.Number <> 0 And wbMyAddin Is Nothing Then
        On Error GoTo ErrHandler
        Err.Clear
        Set wbMyAddin = Workbooks.Open(addinName)
    End If
End If


Application.DisplayAlerts = True
Exit Sub

ErrHandler:


On Error GoTo 0

Application.DisplayAlerts = True

End Sub


Теперь, когда я запускаю этот код, он застревает на строке Set wbMyAddin = Workbooks.Открыть(имя_надстройки) по определенным .XLA надстройка.

А рабочая книга или экземпляр excel не видны, так как код работает на сервере, поэтому не могут отладить, почему это застревает. Я подозреваю, что это как-то связано с расположением надстроек, которые не являются надстройками excel по умолчанию. Я искал все в интернете, но проблема кажется слишком конкретной.

Что я уже пробовал:

Я пробовал загружать / выгружать все надстройки excel вручную.

F-ES Sitecore

Вы можете войти на сервер под учетной записью, под которой работает код, и попробовать этот процесс, и искать ошибки\всплывающие окна и т. д.

В конечном счете, хотя Excel не автоматизируется в неинтерактивной или многопоточной среде, MS не поддерживает это и не дает никаких гарантий, что он будет работать, и это не просто так.

Richard Deeming

Соображения по автоматизации работы офиса на стороне сервера[^]
В настоящее время корпорация Майкрософт не рекомендует и не поддерживает автоматизацию приложений Microsoft Office из любого автоматического, неинтерактивного клиентского приложения или компонента (включая ASP, ASP.NET, DCOM и NT Services), поскольку Office может демонстрировать нестабильное поведение и / или взаимоблокировку при запуске Office в этой среде.

0 Ответов