Объект книги сохраняется после закрытия, и книга открывается при любом последующем действии Excel после закрытия книги. - PullRequest
0 голосов
/ 02 мая 2019

У меня есть книга 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 полностью или, по крайней мере, экземпляр, в котором панель запуска была открыта, то любое действие пользователя начинает вызывать повторное открытие панели запуска.

Спасибо.

1 Ответ

1 голос
/ 16 мая 2019

После долгих размышлений я понял, что проблема связана не с объектами, а с тем, что у меня был триггер Application.OnKey, который устанавливался, но никогда не отпускался, и это заставляло рабочую книгу сохраняться, выпуская триггер OnKey в WorkbookBeforeClose рутина хорошо ее решила.

Спасибо за вашу помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...