powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Вопрос о корректном закрытии XLS файлов кодом VBA !
9 сообщений из 9, страница 1 из 1
Вопрос о корректном закрытии XLS файлов кодом VBA !
    #40105900
Yuri KR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем добрый день! Вопрос о корректном закрытии XLS файлов кодом VBA.
Есть определенные трудности в корректном закрытии XLSX файлов средствами VBA, если ранее вручную были открыты другие XLSX-файлы.

Например:
Из формы файла QWE.xlsxm кодом VBA открываю файл: Test1.xlsx, выполняю в нем кодом необходимые действия, сохраняю без закрытия файла.
Закрываю кодом управляющую форму и сам файл QWE.xlxm без сохранения.

Все корректно работает, если до открытия QWE.xlxm НЕ БЫЛИ открыты другие файлы XLS.
А так происходит следующее - я в итоге вижу только один открытый файл Test1.xlsx, а ранее открытые ранее файлы XLS не видны и на них не возможно переключиться.
Хотя на самом деле ранее открытые файлы есть и когда закрываешь приложение Excel, то запрашивается - сохранять их или нет.

Подскажите пожалуйста, что происходит? как избавиться от такого эффекта?
Нужно, чтобы когда код VBA закрывал форму и им открытые файлы - и на ранее открытые файлы можно было переключаться, как это обычно и происходит.

Для закрытия использую:
Windows("Test.xlsm").Activate
UserForm1.Hide
ActiveWorkbook.Close True
...
Рейтинг: 0 / 0
Вопрос о корректном закрытии XLS файлов кодом VBA !
    #40105913
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yuri KR
Вопрос о корректном закрытии XLS файлов кодом VBA.

При открытии надо сохранять ссылку на объект открытой книги. И закрывать через него. Тогда эти действия не затронут другие открытые книги.
Код: vbnet
1.
2.
3.
4.
set wbk = workbooks.open("x:\folder\filename.xlsx")
' ...
wbk.close
set wbk = nothing



Yuri KR
а ранее открытые ранее файлы XLS не видны и на них не возможно переключиться.

Значит, они открыты в другом экземпляре хост-процесса Excel.
...
Рейтинг: 0 / 0
Вопрос о корректном закрытии XLS файлов кодом VBA !
    #40105960
Yuri KR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
файлы открываю как и написано через SET WB1= workbooks.open("D:\folder\Test1.xlsx")
и использую set wb1 = nothing

{ранее открытые ранее файлы XLS не видны и на них не возможно переключиться.}
Значит, они открыты в другом экземпляре хост-процесса Excel.
Yuri KR - согласен

Выяснил следующее, эта коллизия возникает сразу после ручного открытия только файла QWE.XLSM с авто-открытием формы Form1.
Private Sub Workbook_Open()
Application.Visible = False
Call UserForm1.Show
End Sub
Уже после этого в панели задач при наведении на пиктограмму Excel виден только файл QWE.XLSM, другие файлы исчезают.
Что при ручном открытии файла QWE.XLSM тоже его нужно как-то открывать через SET ?

Из Form1 потом открывается WB1= workbooks.open("D:\folder\Test1.xlsx")
Но как оказалось коллизия с видимостью файлов возникает сразу.
Если они в другом экземпляре хост-процесса Excel, то почему после закрытия QWE.XLSM со всеми nothing не удаляет другой процесс и не возвращает видимость первого.
...
Рейтинг: 0 / 0
Вопрос о корректном закрытии XLS файлов кодом VBA !
    #40105961
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yuri KR
файлы открываю как и написано через SET WB1= workbooks.open("D:\folder\Test1.xlsx")
и использую set wb1 = nothing

{ранее открытые ранее файлы XLS не видны и на них не возможно переключиться.}
Значит, они открыты в другом экземпляре хост-процесса Excel.
Yuri KR - согласен
...

на каком основании "согласен"?
...
Рейтинг: 0 / 0
Вопрос о корректном закрытии XLS файлов кодом VBA !
    #40105965
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yuri KR
... закрытия QWE.XLSM со всеми nothing не удаляет другой процесс и не возвращает видимость первого.

на каком основании вы ожидаете, что это вообще должно произойти, независимо от того, есть "другой" процесс или нет.
Что вы для этого сделали?
...
Рейтинг: 0 / 0
Вопрос о корректном закрытии XLS файлов кодом VBA !
    #40106039
Yuri KR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
что сделал?
закрыл файлы, которые открыл программно.
удалил ссылки на них.
закрыл форму и файл из которого
запускался Vba код.

а что вы предполагаете нужно сделать и как?
...
Рейтинг: 0 / 0
Вопрос о корректном закрытии XLS файлов кодом VBA !
    #40106046
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот ведь лять.
прямо сегодня в соседнем форуме мне некий товарищ объяснял, что код он "просто так" написал...

Yuri KR
файлы открываю как и написано через SET WB1= workbooks.open("D:\folder\Test1.xlsx")

Код: vbnet
1.
2.
3.
4.
Private Sub Workbook_Open()
    Application.Visible = False ' <-- вот это, что за нахрен, и где обратное этому действие?
    Call UserForm1.Show
End Sub


...
Рейтинг: 0 / 0
Вопрос о корректном закрытии XLS файлов кодом VBA !
    #40106053
Yuri KR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
утром проверю,
код представлен частично, но там есть и
Application.Visible = True ' <--
...
Рейтинг: 0 / 0
Вопрос о корректном закрытии XLS файлов кодом VBA !
    #40106111
Yuri KR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
booby,
Application.Visible = True
и вопрос решился.
СПАСИБО !!!
Всем хороших выходных!
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Вопрос о корректном закрытии XLS файлов кодом VBA !
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]