Проблема загрузки надстройки 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 в этой среде.