У меня есть книга Excel, выступающая в качестве панели запуска для других инструментов на основе Excel, позволяющая пользователю запускать несколько экземпляров одного и того же инструмента. Я заставляю новые инструменты открываться в новом экземпляре Excel каждый раз, устанавливая новое приложение.Затем код также передает некоторые данные из панели запуска в инструменты.
К сожалению, для некоторых пользователей, в настоящее время только немногие из 20-30, которые использовали систему, если они закрывают книгу панели запуска, кажетсясохраняться в этом экземпляре Excel (он остается видимым в проводнике проекта VBE).Что еще более странно, что независимо от того, что они теперь делают в любой книге, которая остается открытой в этом экземпляре Excel egtype в ячейку и нажимают клавишу возврата, панель запуска снова открывается.Они должны полностью отключить Excel, чтобы остановить проблему.
Я освобождаю все объекты, используемые в подпрограмме, которая открывает инструменты, так что этого не может быть, мне интересно, если это необходимо, если я открываюрабочие книги и хотите оставить их открытыми для пользователя?
Мой код:
Public Sub LaunchTool()
Dim WB1 As Workbook
Dim WS1 As Worksheet
Dim WT1 As Workbook
Dim EA1 As New Application
Application.DisplayAlerts = False
'Define workbook aliases
Set WT1 = ActiveWorkbook
EA1.Workbooks.Open Filename:=PathString, IgnoreReadOnlyRecommended:=True,
ReadOnly:=True
Set WB1 = EA1.ActiveWorkbook
Set WS1 = WB1.Worksheets("Import")
WB1.Windows(1).Visible = True
EA1.Visible = True
'pass on some values
WB1.Sheets("Control").Range("Dev_Flag") =
WT1.Sheets("Param").Range("Dev_Flag")
Set WT1 = Nothing
Set WS1 = Nothing
Set WB1 = Nothing
Set EA1 = Nothing
Application.DisplayAlerts = True
End Sub
Application.DisplayAlerts = False
предназначен для подавления Microsoft Excel ожидает, пока другое приложение завершитДействие OLE предупреждение, которое иногда появляется во время загрузки.
В модуле ThisWorkbook
я пробовал следующее:
Private WithEvents XL As Excel.Application
Private Sub XL_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As Boolean)
Set XL = Nothing
Workbooks.Open ThisWorkbook.FullName
ThisWorkbook.Close False
End Sub
Но не повезло!
Для большинства пользователей все работает нормально, но некоторые пользователи, как я описал, не могут успешно закрыть панель запуска, а затем, если они не закроют Excel полностью или, по крайней мере, экземпляр, в котором панель запуска была открыта, то любое действие пользователя начинает вызывать повторное открытие панели запуска.
Спасибо.