Sub tt() Dim wb As Workbook On Error Resume Next Application.Workbooks("Файл.xlsm").Close 0 'Закрываем файл "Файл" For Each wb In Workbooks 'цикл по открытым книгам If wb.Name <> ThisWorkbook.Name Then 'если это не текущая книга If Windows(wb.Name).Visible = True Then 'если эта книга видима (невидима, например, книга макросов Персонал) ThisWorkbook.Close 0 'закрываем только текущий файл. Дальше макрос не работает End If End If Next wb 'если все открытые книги, кроме этой, невидимы или открыта только текущая ThisWorkbook.Saved = True 'эта книга в текущем сеансе будет закрываться без сохранения Application.Quit 'закрываем текущий экземпляр Excel (может быть открыто несколько) End Sub
[/vba]
А если есть Персонал? Или еще невидимки? [vba]
Код
Sub tt() Dim wb As Workbook On Error Resume Next Application.Workbooks("Файл.xlsm").Close 0 'Закрываем файл "Файл" For Each wb In Workbooks 'цикл по открытым книгам If wb.Name <> ThisWorkbook.Name Then 'если это не текущая книга If Windows(wb.Name).Visible = True Then 'если эта книга видима (невидима, например, книга макросов Персонал) ThisWorkbook.Close 0 'закрываем только текущий файл. Дальше макрос не работает End If End If Next wb 'если все открытые книги, кроме этой, невидимы или открыта только текущая ThisWorkbook.Saved = True 'эта книга в текущем сеансе будет закрываться без сохранения Application.Quit 'закрываем текущий экземпляр Excel (может быть открыто несколько) End Sub
Продолжить исполнение кода после закрытия книги с ним? Ну-ну... Ищите и обрящете... Не, я могу написать код, который создаст такую видимость, но зачем? Единственное что мне приходит в голову — макрос-установщик, который при распаковке архива ставит зависимости и самоуничтожается.
Продолжить исполнение кода после закрытия книги с ним? Ну-ну... Ищите и обрящете... Не, я могу написать код, который создаст такую видимость, но зачем? Единственное что мне приходит в голову — макрос-установщик, который при распаковке архива ставит зависимости и самоуничтожается.StoTisteg
Интуитивно понятный код - это когда интуитивно понятно, что это код.
нашел код, работает отлично, но дело в этой строке[vba]
Код
Application.Workbooks("Файл.xlsm").Close
[/vba] то есть если файл один, то закрывается ексель, если более одного, закрывается только текущая книга с макросами, а если вставить эту строку - происходит то что описывалось
[vba]
Код
On Error Resume Next 'Application.Workbooks("Файл.xlsm").Close Application.DisplayAlerts = False If Application.Workbooks.Count > 1 Then ActiveWorkbook.Close Else Application.Quit End If
[/vba]
нашел код, работает отлично, но дело в этой строке[vba]
Код
Application.Workbooks("Файл.xlsm").Close
[/vba] то есть если файл один, то закрывается ексель, если более одного, закрывается только текущая книга с макросами, а если вставить эту строку - происходит то что описывалось
[vba]
Код
On Error Resume Next 'Application.Workbooks("Файл.xlsm").Close Application.DisplayAlerts = False If Application.Workbooks.Count > 1 Then ActiveWorkbook.Close Else Application.Quit End If
Да, закрывается. Если у Вас нет, то это означает, что кроме того файла, в котором макрос и файла "Файл" у Вас открыты еще какие-то файлы. Насколько я понял Ваше ТЗ, в этом случае нужно закрыть только текуший файл и файл "Файл"
Да, закрывается. Если у Вас нет, то это означает, что кроме того файла, в котором макрос и файла "Файл" у Вас открыты еще какие-то файлы. Насколько я понял Ваше ТЗ, в этом случае нужно закрыть только текуший файл и файл "Файл"_Boroda_
Тогда так (то же, что у Александра, только через счётчик)[vba]
Код
Application.DisplayAlerts=False On Error Resume Next Workbooks("Файл.xlsm").Close For i=1 to Workbooks.Count If Wirkbooks(i).Name<>ThisWorkbook.Name And Windows(Wirkbooks(i).Name).Visible Then Exit For Next i If i>Workbooks.Count Then Application.Quit Else ThisWorkbook.Close
[/vba]
Тогда так (то же, что у Александра, только через счётчик)[vba]
Код
Application.DisplayAlerts=False On Error Resume Next Workbooks("Файл.xlsm").Close For i=1 to Workbooks.Count If Wirkbooks(i).Name<>ThisWorkbook.Name And Windows(Wirkbooks(i).Name).Visible Then Exit For Next i If i>Workbooks.Count Then Application.Quit Else ThisWorkbook.Close
_Boroda_, да все верно закрыть текущий файл и файл "Файл", если же больше нет книг, то ексель закрывается, я полагаю возможно то, что из "Файла" подгружаются в файл с макросами данные, не уверен, но может такое быть?
_Boroda_, да все верно закрыть текущий файл и файл "Файл", если же больше нет книг, то ексель закрывается, я полагаю возможно то, что из "Файла" подгружаются в файл с макросами данные, не уверен, но может такое быть?Asretyq
Какая связь с закрытием файлов? Ну допустим, что подгружается, и что?
Я не понимаю, что конкретно не получается? В момент попытки закрытия Excel сколько файлов у Вас открыто? Сколько файлов открыто в момент запуска макроса? Макрос только с теми строками, что я написал pдесь http://www.excelworld.ru/forum/10-39862-264092-16-1542364782 или там еще что-то есть?
Какая связь с закрытием файлов? Ну допустим, что подгружается, и что?
Я не понимаю, что конкретно не получается? В момент попытки закрытия Excel сколько файлов у Вас открыто? Сколько файлов открыто в момент запуска макроса? Макрос только с теми строками, что я написал pдесь http://www.excelworld.ru/forum/10-39862-264092-16-1542364782 или там еще что-то есть?_Boroda_
_Boroda_, конкретно не получается закрыть ексель, все файлы закрываются до открытия ексель закрыть, полностью, даже через експлорер из процессов закрыл, в момент запуска открыты 0 файлов запускаю файл с макросами, автоматически подгружается "Файл", соответственно 2 книги открыты, проверял многократно теперь, закрываю файл с макросами, закрывается "Файл", остается пуское окно открытым, то есть сам ексель, все книги закрыты связь между файлами - подгрузка базы в файл с макросами из "Файла", по-моему это никак не должно влиять
_Boroda_, конкретно не получается закрыть ексель, все файлы закрываются до открытия ексель закрыть, полностью, даже через експлорер из процессов закрыл, в момент запуска открыты 0 файлов запускаю файл с макросами, автоматически подгружается "Файл", соответственно 2 книги открыты, проверял многократно теперь, закрываю файл с макросами, закрывается "Файл", остается пуское окно открытым, то есть сам ексель, все книги закрыты связь между файлами - подгрузка базы в файл с макросами из "Файла", по-моему это никак не должно влиятьAsretyq
Asretyq, а теперь внимание вопрос. Не происходит ли так, что Вы выделяете в проводнике несколько файлов, потом открываете их правой кнопкой мыши?
Asretyq, а теперь внимание вопрос. Не происходит ли так, что Вы выделяете в проводнике несколько файлов, потом открываете их правой кнопкой мыши?StoTisteg
Интуитивно понятный код - это когда интуитивно понятно, что это код.
StoTisteg, нет, кликаю по самому файлу, в котором макрос. То есть не через контекстное меню. Скинул файлы можете сами проверить, или они у вас норм работают?
StoTisteg, нет, кликаю по самому файлу, в котором макрос. То есть не через контекстное меню. Скинул файлы можете сами проверить, или они у вас норм работают?Asretyq