Страницы: 1
RSS
Закрытие excel макросом
 
Добрый вечер! Есть форма, запускается при открытии файла, приложение excel при этом скрывается (Application.Visible = False). Хотелось бы при закрытии формы нажатием на "крестик" закрывать и excel без ущерба возможно открытым параллельно файлам excel (т.е. сделать проверку, есть ли открытые файлы помимо текущего и если есть - закрывать только книгу с  моей формой и делать excel видимым, если нет - закрывать само  приложение).
Помогите, пожалуйста, корректно написать такую процедуру!

Sub CloseWorkbook()
k = 0
Dim wb As Workbook: Application.ScreenUpdating = False
For Each wb In Workbooks  
If wb.Windows(1).Visible = True Then k = k + 1 'вот тут первая загвоздка, потому как все книги скрываются как только запускается моя форма
Next wb
If k > 1 Then
Application.Visible = True
ActiveWorkbook.Close
Else: Application.Quit
End If
End Sub
 
возможно, при открытии вашего файла с формой ПЕРЕД скрытием окон и книг проверить, есть ли открытые книги?
установить флажок - в глобальную переменную.
а при закрытии формы проверить этот флажок.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Если PERSONAL и надстройки подсчитывать не надо, то можно так попробовать:
Код
If Cnt_Wb > 1 then
    Application.Visible = true
    ThisWorkbook.Close 1
Else
    Application.Quit
End If

Function Cnt_Wb()
    Dim wbBk As Workbook, lCnt As Long
    For Each wbBk In Workbooks
        If wbBk.IsAddin = False And UCase(Left(wbBk.Name, 8)) <> "PERSONAL" Then
            lCnt = lCnt + 1
        End If
    Next wbBk
    Cnt_Wb = lCnt
End F unction
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
ikki, золотые слова! Спасибо!  :)
Страницы: 1
Наверх