Страницы: 1
RSS
Закрытая книга остается в редакторе VBA
 
Имеется книга Excel, которая содержит  несколько стандартных модулей, модулей форм, модулей классов. При закрытии данной книги из Excel  проект по какой-то причине не выгружается (проект виден в Project Explorer, можно просматривать и редактировать программный код). Если снова открыть данную книгу, то в Project Explorer отражается еще один экземпляр проекта VBA к данной книге.
 
посмотрите
лента Вид
кнопка Отобразить
скрыта и закрыта - это разные понятия
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Что скажет
?thisworkbook.Path
в окне отладки, если выполнить активируя сперва одну книгу, затем вторую?
 
у меня так всегда видны все модули закрытых книги пока не перезагружусь
 
Цитата
Тимофеев написал:
у меня так всегда видны все модули закрытых книг
Такого не должно быть: все закрыте книги исчезают из окна проводника проектов.
 
Подниму тему. У меня  та-же проблема, закрытые книги стали оставаться в окне  Project - VBAProject. Как это изменить?
Началось с того что мой макрос по обработке нескольких файлов (который годами работал без проблем) стал жутко тормозить.
Разбираясь в чём дело, обнаружил что каждый следующий файл обрабатывается всё дольше и дольше, остановил процесс нажав клавишу Esc,
далее при пошаговом выполнении обнаружил что после каждого нажатия клавиши F8 происходит задержка около 1 секунды и заметил что книги
которые открывались и потом закрывались остались висеть в указанном выше окне. Думаю причина торможения в этом.
Ещё заметил что когда я закрыл все книги Excel, то в диспетчере задач Microcoft Excel остался висеть и занимать приличное кол-во памяти.
Прошу уважаемых знатоков помощи в решении этой проблемы.
 
Цитата
Maxleon написал:
Прошу уважаемых знатоков помощи в решении этой проблемы
Нужен код открытия книг и код закрытия, а оптимально - весь код. Иначе все это гадание на кофейной гуще.
Плюс совет: уберите все обработчики ошибок и отключение оповещений приложения, обновления экрана и все такое. Т.е. уберите все, что может скрыть от Вас любое значащее сообщение при закрытии книги. Это DisplayAlerts, ScreenUpdating как правило. Для чего это: в момент закрытия может возникать либо какой-то запрос или оповещение системы, которое мешает закрытию файла. В итоге файл пропускается и остается висеть в памяти. А может ошибка возникает и где-то раньше - как знать. Может файлы открываются в защищенном режиме и Вы вовсе их не обрабатываете и тем более не можете закрыть, т.к. к ним нет доступа.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Весь код очень большой и мудрёный. Я создал новую книгу для тестов, создал в ней тестовый макрос и сохранил её. Закрыл все книги Excel,
проверил отсутствие Excel в диспетчере задач, затем открыл только эту книгу и пошагово выполнил макрос три раза. И вот что получилось.
 
А если?
Код
Workbook(Dannye).Close 0 'закрытие без сохранения
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Вот сама тестовая книга.
Да. Здесь я её не сохраняю, но почему она после закрытия остаётся висеть в окне?

Попробовал Workbooks(Dannye).Close 0 'Результат такой же.
 
Ваша программа из #10 открывает книгу, имя которой указано в ячейке B2, а путь  - в ячейке A2 и сразу после этого эту книгу закрывает. Исходная книга (Тест.xlsm) остается открытой (и видимой). Никаких других книг в окне проектов нет.
Изменено: sokol92 - 04.02.2022 16:52:37
Владимир
 
Всё верно, но почему закрытая книга остаётся висеть в окне Project - VBAProject?
Хотя после закрытия она должна от туда исчезнуть.
А она там размножается после каждого открытия и закрытия.
В чём подвох?
 
Maxleon 5 раз пошагово выполнил макрос все нормально только на листе изменил конечно свой путь и имя файла.
Может какая то проблема с файлом адрес которого записан на листе или опять какие-нибудь заморочки с новыми версиями эксель У меня эксель 2010.
И зачем в макросе писать лишние переменные и строки
Код
Sub ТестОткрытия()
    Dim Dannye$, Path$
    With ThisWorkbook.Worksheets("Документы")
        Dannye = .Cells(2, 2).Value
        Path = .Cells(2, 1).Value
    End With
    Workbooks.Open Path & Dannye
    Workbooks(Dannye).Close True
End Sub
 
Цитата
написал:
она там размножается после каждого открытия и закрытия.
Это - проблемы Вашего экземпляра Excel. Для начала попробуйте сменить пользователя MS Windows.
Владимир
Страницы: 1
Читают тему (гостей: 1)
Наверх