Quit не закрывает excel

Когда Application.Quit встречается в подпрограмме, он остается только в памяти и продолжает выполнять строки под ним и фактически завершает работу до тех пор, пока не встретит «Exit Sub». Когда встречается обычный «End Sub» на основном уровне, он также закрывает Excel. Но скажем, если рабочая книга каким-то образом закрывается до достижения строки «Exit Sub», «End» или «End Sub», Excel не закроется.

Решение состоит в том, чтобы создать общедоступную переменную с именем ToQuitNow с начальным значением False и изменить ее на True там, где вы хотите закрыть Excel. и проверьте сразу после этого, чтобы убедиться, что это правда, затем вернитесь на предыдущий подуровень с помощью «Exit Sub» или «End», чтобы выйти сразу, и сделайте то же самое на каждом уровне подпрограммы, где ожидается возврат из более глубокой подпрограммы. Когда он вернется на основной уровень, последний «Exit Sub» фактически закроет Excel. Если вы не хотите, чтобы Excel запрашивал сохранение внесенных изменений, добавьте строку «ThisWorkbook.Saved = True» сразу после Application.Quit или перед последним «Exit Sub» на начальном уровне, и Excel завершит работу без сохранения.

Попробуйте следующий тест ниже, просто запустите «Тест»

      Public ToQuitNow As Boolean

Sub Test()

ToQuitNow = False ' initialize with False value
Call SecondSub
MsgBox ("Primary level here. Back from SecondSub")
If ToQuitNow = True Then
    Exit Sub 'will actually quit Excel now if True
End If
MsgBox ("This line will not run if ToQuitNow is True")
End Sub

Sub SecondSub()

MsgBox ("SecondSub here")
Call ThirdSub
MsgBox ("SecondSub here. Back from ThirdSub")
If ToQuitNow = True Then
    Exit Sub ' will return to Main level if True
End If
MsgBox ("This line from SecondSub will not run if ToQuitNow is True")
End Sub

Sub ThirdSub()

MsgBox ("ThirdSub here")
Call FourthSub
MsgBox ("ThirdSub here. Back from FourthSub")
If ToQuitNow = True Then
    Exit Sub ' will return to SecondSub if True
End If
MsgBox ("This line from ThirdSub will not run if ToQuitNow is True")
End Sub

Sub FourthSub()

MsgBox ("FourthSub here")
Application.Quit
ThisWorkbook.Saved = True ' Excel will think changes already saved _
and will quit without saving
ToQuitNow = True ' activate Quit
If ToQuitNow = True Then
    MsgBox ("Quit command executed in FourthSub")
    Exit Sub ' will return to ThirdSub if True
    'Can also put in End in above line to quit right away

End If
MsgBox ("This line from FourthSub will not run if ToQuitNow is True.")
End Sub

Содержание

  1. Excel не завершает работу после вызова метода Quit при автоматизации из JScript
  2. Симптомы
  3. Причина
  4. Решение
  5. Состояние
  6. Шаги для воспроизведения
  7. Ссылки
  8. Как закрыть Эксель, если не закрывается, и что из этого выйдет?
  9. Причины, почему не закрывается Excel
  10. Что делать
  11. Используйте горячие клавиши
  12. Закройте приложение через специальную панель
  13. Специальная программа
  14. Альтернативный вариант
  15. Что еще сделать после закрытия / во время работы
  16. Убедитесь, что Эксель не пользуется другим процессом
  17. Проверьте систему на вирусы
  18. Решение проблем с надстройками
  19. Дополнительные советы
  20. Приложение не закрывается после вызова quit
  21. 11 ответов
  22. Excel quit не закрывается

Excel не завершает работу после вызова метода Quit при автоматизации из JScript

Симптомы

При автоматизации Microsoft Excel из Microsoft JScript Excel остается в памяти после вызова метода Quit, пока вы не закроете Internet Explorer или не перейдете на другую страницу.

Причина

JScript удерживает ссылку на Excel. Так как при выполнении команды «Выйти» в Excel есть ссылка, Excel не завершает работу. JScript — это язык сборки мусора, то есть подсистема очищается после себя в определенный момент, а не при задании переменным значения NULL. При завершении работы Internet Explorer или переходе на другую страницу подсистема уничтожается. Это приводит к принудительной сборке мусора и освобождает ссылку на Excel.

Решение

Чтобы обойти эту проблему, можно вызвать метод CollectGarbage. Это приводит к немедленной сборке мусора JScript, которая освобождает ссылку на Excel. В следующем фрагменте кода показано, как использовать метод CollectGarbage:

Обратите внимание, что метод CollectGarbage не вызывается непосредственно после метода Quit в Excel. Перед вызовом CollectGarbage необходимо предоставить JScript небольшой промежуток времени. В этом примере таймер используется для отображения краткого ожидания перед принудительной сборкой мусора.

Другим решением является использование VBScript для автоматизации Microsoft Excel. В отличие от JScript, VBScript не является языком сборки мусора. Таким образом, ссылки выпускаются при установке для переменных значения Nothing. С помощью VBScript Excel завершает работу сразу после вызова метода Quit и освобождения переменных. Дополнительные сведения см. в разделе «Ссылки «.

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

Состояние

Корпорация Майкрософт подтвердила, что это ошибка в продуктах Майкрософт, перечисленных в начале этой статьи.

Шаги для воспроизведения

Запустите Блокнот и вставьте в редактор следующий код:

Сохраните файл как JScriptTest.HTM и закройте Блокнот.

Дважды щелкните файл JScriptTest.HTM, чтобы загрузить его в Internet Explorer.

Запустите диспетчер задач Windows.

Нажмите кнопку «Автоматизировать Excel» на веб-странице в Internet Explorer. Изучите диспетчер задач Windows и обратите внимание, что Excel запускается и остается в памяти.

Перейдите на другую страницу или закройте Internet Explorer. Обратите внимание, что Excel завершает работу и больше не отображается в диспетчере задач Windows.

Ссылки

Дополнительные сведения о примере кода VBScript, демонстрирующий автоматизацию в Excel, см. в статье об автоматизации Excel с помощью клиентского VBScript.

Источник

Как закрыть Эксель, если не закрывается, и что из этого выйдет?

Как закрыть Эксель, если не закрывается? Воспользуйтесь комбинацией Alt+F4, запустите «Диспетчер задач» и удалите процесс Excel, снимите задачу для приложения или просто перезагрузите компьютер / ноутбук (рекомендуется в крайнем случае). Ниже подробно рассмотрим, как действовать при возникновении подобных проблем, и какими методами можно закрыть программу.

Причины, почему не закрывается Excel

Существует множество причин, почему не закрывается Эксель, как и в случае с другими программами. К основным объяснениям можно отнести:

  1. Ошибка в программном коде.
  2. Конфликты с другими ПО.
  3. Загрязненная операционная система.
  4. Применение не подходящей версии Виндовс.
  5. Сбои работы жесткого диска.
  6. Дефицит оперативной памяти.
  7. Действие вирусов.
  8. Прочие причины.

Что делать

При возникновении зависания нужно сначала разобраться, как закрыть программу, если при нажатии на «крестик» Эксель не закрывается. Рассмотрим основные варианты.

Используйте горячие клавиши

Первое, что стоит сделать при возникновении подобных проблем — попробовать закрыть приложение с помощью комбинации горячих кнопок. Чаще всего работает Alt+F4. В ее задачи входит принудительное прекращение работы процесса.

Закройте приложение через специальную панель

Если рассмотренный метод не помогает, можно использовать еще один метод, как закрыть Эксель — сделать это с помощью вызова специальной панели. Для этого жмите на Ctrr+Alt+Del, после чего войдите в «Диспетчер задач» и во вкладку «Процессы». Здесь найдите нужный вариант с названием Excel, жмите правой кнопкой мышки и кликните «Снять задачу». Как вариант, можно зайти в раздел «Служба приложений» и отключить нужный софт там.

Специальная программа

Бывают ситуации, когда не закрывается файл Эксель из-за отсутствия процесса в списке. В таком случае может потребоваться специальная программа — Process Exprorer. Она не требует установки. Достаточно скачать ее с официального сайта docs.microsoft.com/ru-ru/previous-versions/bb896653(v=msdn.10)?redirectedfrom=MSDN, запустить и найти нужный процесс. В отличие от «Диспетчера задач» здесь отображаются все процессы. Найдите интересующий, кликните на него правой кнопкой мышки и выберите кнопку удаления.

Альтернативный вариант

Крайний метод, что делать, если не закрывается Эксель при выполнении всех рассмотренных выше шагов — принудительно перезапустить компьютер / ноутбук. После запуска программа будет закрыта, и ее можно будет снова запустить. При этом сохраняется риск сбоев во время работы, поэтому нужно определить причину.

Что еще сделать после закрытия / во время работы

Ситуация, когда не закрываются файлы Excel, нужно разобраться с дальнейшими шагами. Важно выявить причину и избежать подобных ситуаций в будущем. Сделайте следующие шаги.

Убедитесь, что Эксель не пользуется другим процессом

В ситуации, когда Excel занята другим процессом, эти данные будут отображаться в нижней части окна. Если параллельно какие-то приложения пытаются выполнить действия, Эксель не будет отвечать, и закрыть его не получится. В таком случае дождитесь, пока задание выполниться, после чего сделайте еще одну попытку.

Проверьте систему на вирусы

Если Excel не закрывается, проверьте ПК / ноутбук на вирусы. Проблемы с прекращением работы могут возникнуть на фоне действия вредоносного ПО. В случае его удаления можно попробовать закрыть контент, и это происходит без проблем.

Решение проблем с надстройками

Применение надстроек упрощает работу с Эксель, но параллельно могут возникать конфликты. Попробуйте запустить приложение без надстроек и проверьте, удастся ли закрыть приложение. При работе в Виндовс 10 кликните на Win+R, а после — Excel / safe. Далее жмите «ОК». Если проблему удалось устранить, кликните на «Файл», а далее «Параметры» и «Надстройки».

Выберите «Надстройки СОМ» и жмите на кнопку «Перейти». После очистки флажков жмите «ОК». После откройте и попробуйте закрыть Эксель. Если он все равно не закрывается, причина может быть в другом.

Убедитесь, что файл не создается другим приложением. В таком случае некоторые функции Excel могут работать некорректно.

Дополнительные советы

Жалобы, мол, не могу закрыть Эксель, часто встречаются в Интернете. Пользователи не могут разобраться с зависанием и часто решают вопрос кардинально и путем отключения ПК / ноутбука. Но в большинстве случаев проблему можно решить более простым путем:

  1. Убедитесь, что софт не закрывается именно из-за внутренних проблем. Бывают ситуации, что неисправность именно в компьютере. Распространенная ситуация, когда закрыть Эксель не удается из-за дефицита оперативной памяти или сбоях в работе процессора. В таком случае нужно попробовать закрыть другое «тяжелое» ПО и повторить попытку.
  2. Переустановите программу. Если с Excel регулярно возникают проблемы, возможно, он установился некорректно и требует перестановки. Попробуйте удалить и установить заново программу.
  3. Обновите Excel, если он регулярно не закрывается, до последней версии.
  4. Убедитесь, что версия и разрядность Виндовс соответствуют требованиям.
  5. Выждите время. Многие пользователи слишком торопятся и хотят, чтобы ПО закрывалось мгновенно. Но иногда программа немного зависает. Нужно просто подождать и закрыть ее через несколько минут.

Зная, как закрыть Эксель, и почему он не закрывается, вы сможете решить проблему с программой и исключить ее появление в будущем. Для начала перепробуйте приведенные выше методы, а перезапуск / выключение оставьте на крайний случай. Это связано с тем, что при грубой перезагрузки многая информация может быть утеряна. Также не забывайте сохраняться перед попыткой закрытия, чтобы не допустить потери важных файлов.

В комментариях расскажите, какой из приведенных советов вам действительно помог, и какие еще шаги можно реализовать для решения ситуации.

Источник

Приложение не закрывается после вызова quit

У меня небольшая проблема, которую я не могу понять. Я сохраняю DataGridView (его содержимое) в файл xls. У меня нет проблем с этим, за исключением того, что в моем диспетчере задач все еще отображается, что он работает. Я позвонил:

Это объявлено как:

Похоже, это не работает, НО это то же самое, что я ухожу, когда позволяю пользователю выбрать экспорт в документ Word. Я не уверен, где я ошибаюсь .

Вот мой полный код

11 ответов

Просто вызов .Quit() не удалит приложение из памяти. Очень важно закрыть объекты после того, как вы закончите кодирование. Это гарантирует, что все объекты будут освобождены должным образом и ничего не останется в памяти.

Также стоит упомянуть ссылку Правило 2 DOT.

Если вам нравится автоматизировать Excel из VB.Net, вы также можете взглянуть на этот ссылка.

ПОДПИСАТЬСЯ

Проблема заключается в правиле 2 DOT, как я упоминал выше. Когда вы используете правило 2 DOT (пример: Excel.XlBordersIndex.xlDiagonalDown ), вы должны выполнить сборку мусора, используя GC.Collect() . Итак, все, что вам нужно сделать, это добавить эту часть

В Private Sub ReleaseObject(ByVal obj As Object)

ЗАКЛЮЧИТЕЛЬНЫЙ КОД

Ни одна из приведенных выше рекомендаций не сработала для меня, пока я не последовал за комментарием @SiddharthRout выше. «Как правильно работать с COM-объектами на сегодняшний день? «

Это указывает на то, что ссылки на объекты com сохраняются под отладчиком. Обходной путь — вызвать сборщик мусора из процедуры, вызывающей процедуру com. У меня это сработало.

Запустите сборщик мусора из файла finally в блоке TRY Catch.

Скопировано из: post by «Govert» on what is the right way to work with COM objects?

Я столкнулся с похожей ситуацией, и Google привел меня сюда. Я попробовал приведенные выше ответы, но ни один из них не сработал. Но этого было достаточно, чтобы направить меня на правильный путь.

  1. Функция ReleaseObject, упомянутая в других ответах, не работала. Excel продолжал работать в фоновом режиме.
  2. Комбинация GC.Collect + GC.WaitForPendingFinalizers() — это правильный выбор, но они должны вызываться вне функции, в которой определены com-объекты excel.

Например, не работает следующее:

Пока работает следующее:

Я много раз использовал возможность закрыть документ EXCEL в скрипте вместе с скрытием, сделав видимым, а теперь закрывая, если это единственная открытая книга, иначе закройте этот рабочий лист. Вот мой

Источник

Excel quit не закрывается

Модератор форума: китин, _Boroda_

Мир MS Excel » Вопросы и решения » Вопросы по VBA » Эксель не закрывается с кодом Application.Quit (Макросы/Sub)

Эксель не закрывается с кодом Application.Quit

Sobirjon Дата: Понедельник, 09.03.2020, 14:56 | Сообщение № 1
Roman777 Дата: Понедельник, 09.03.2020, 16:24 | Сообщение № 2

Много чего не знаю.

Sobirjon Дата: Вторник, 10.03.2020, 04:09 | Сообщение № 3
K-SerJC Дата: Вторник, 10.03.2020, 09:27 | Сообщение № 4

Option Explicit
Public trt As Boolean

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If trt Then Exit Sub
Application.DisplayFullScreen = False
ActiveWindow.DisplayHeadings = True
Application.DisplayFormulaBar = True
trt = True
If Workbooks.Count = 1 Then
ThisWorkbook.Saved = True
Application.Quit
ThisWorkbook.Close False
Else
If Workbooks.Count = 2 Then
If Workbooks(1).Name = «PERSONAL.XLSB» Or Workbooks(2).Name = «PERSONAL.XLSB» Then
Workbooks(«PERSONAL.XLSB»).Close False
ThisWorkbook.Saved = True
Application.Quit
trt = False
End If
Else
ThisWorkbook.Close False
End If
End If
End Sub

Option Explicit
Public trt As Boolean

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If trt Then Exit Sub
Application.DisplayFullScreen = False
ActiveWindow.DisplayHeadings = True
Application.DisplayFormulaBar = True
trt = True
If Workbooks.Count = 1 Then
ThisWorkbook.Saved = True
Application.Quit
ThisWorkbook.Close False
Else
If Workbooks.Count = 2 Then
If Workbooks(1).Name = «PERSONAL.XLSB» Or Workbooks(2).Name = «PERSONAL.XLSB» Then
Workbooks(«PERSONAL.XLSB»).Close False
ThisWorkbook.Saved = True
Application.Quit
trt = False
End If
Else
ThisWorkbook.Close False
End If
End If
End Sub

Благими намерениями выстелена дорога в АД.

Ответить

Option Explicit
Public trt As Boolean

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If trt Then Exit Sub
Application.DisplayFullScreen = False
ActiveWindow.DisplayHeadings = True
Application.DisplayFormulaBar = True
trt = True
If Workbooks.Count = 1 Then
ThisWorkbook.Saved = True
Application.Quit
ThisWorkbook.Close False
Else
If Workbooks.Count = 2 Then
If Workbooks(1).Name = «PERSONAL.XLSB» Or Workbooks(2).Name = «PERSONAL.XLSB» Then
Workbooks(«PERSONAL.XLSB»).Close False
ThisWorkbook.Saved = True
Application.Quit
trt = False
End If
Else
ThisWorkbook.Close False
End If
End If
End Sub

Sobirjon Дата: Вторник, 10.03.2020, 14:21 | Сообщение № 5

[/vba]завершает макрос, но приложение остается по прежнему.

Протестировал вот так:
[vba]

Private Sub Workbook_BeforeClose(Cancel As Boolean)
With Application
.DisplayFullScreen = False
.DisplayFormulaBar = True
.DisplayAlerts = False
End With

‘ ActiveWorkbook.Close True
‘ Application.Quit
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Application.DisplayAlerts = False
Cancel = True
End Sub

Private Sub Workbook_Open()
Application.DisplayFullScreen = True
End Sub

[/vba]завершает макрос, но приложение остается по прежнему.

Протестировал вот так:
[vba]

Private Sub Workbook_BeforeClose(Cancel As Boolean)
With Application
.DisplayFullScreen = False
.DisplayFormulaBar = True
.DisplayAlerts = False
End With

‘ ActiveWorkbook.Close True
‘ Application.Quit
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Application.DisplayAlerts = False
Cancel = True
End Sub

Private Sub Workbook_Open()
Application.DisplayFullScreen = True
End Sub

[/vba]завершает макрос, но приложение остается по прежнему.

Протестировал вот так:
[vba]

Private Sub Workbook_BeforeClose(Cancel As Boolean)
With Application
.DisplayFullScreen = False
.DisplayFormulaBar = True
.DisplayAlerts = False
End With

‘ ActiveWorkbook.Close True
‘ Application.Quit
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Application.DisplayAlerts = False
Cancel = True
End Sub

Private Sub Workbook_Open()
Application.DisplayFullScreen = True
End Sub

K-SerJC Дата: Среда, 11.03.2020, 12:59 | Сообщение № 6

Option Explicit
Public trt As Boolean

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If trt Then trt = False: Cancel = True: Exit Sub
Application.DisplayFullScreen = False
ActiveWindow.DisplayHeadings = True
Application.DisplayFormulaBar = True
trt = True
If Workbooks.Count = 1 Then
ThisWorkbook.Saved = True
Application.Quit
Else
If Workbooks.Count = 2 Then
If Workbooks(1).Name = «PERSONAL.XLSB» Or Workbooks(2).Name = «PERSONAL.XLSB» Then
Workbooks(«PERSONAL.XLSB»).Close False
ThisWorkbook.Saved = True
Application.Quit
trt = False
End If
Else
End If
End If
ThisWorkbook.Saved = True
End Sub

Private Sub Workbook_Open()
Application.DisplayFullScreen = True
End Sub

событие Workbook_BeforeClose запускается когда вы уже закрываете эту книгу
еще раз в нем вызывать закрытие книги не требуется
это будет выполнено по завершению этой процедуры.

переменная trt чтобы повторно событие не запустилось.

Option Explicit
Public trt As Boolean

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If trt Then trt = False: Cancel = True: Exit Sub
Application.DisplayFullScreen = False
ActiveWindow.DisplayHeadings = True
Application.DisplayFormulaBar = True
trt = True
If Workbooks.Count = 1 Then
ThisWorkbook.Saved = True
Application.Quit
Else
If Workbooks.Count = 2 Then
If Workbooks(1).Name = «PERSONAL.XLSB» Or Workbooks(2).Name = «PERSONAL.XLSB» Then
Workbooks(«PERSONAL.XLSB»).Close False
ThisWorkbook.Saved = True
Application.Quit
trt = False
End If
Else
End If
End If
ThisWorkbook.Saved = True
End Sub

Private Sub Workbook_Open()
Application.DisplayFullScreen = True
End Sub

событие Workbook_BeforeClose запускается когда вы уже закрываете эту книгу
еще раз в нем вызывать закрытие книги не требуется
это будет выполнено по завершению этой процедуры.

переменная trt чтобы повторно событие не запустилось. K-SerJC

Благими намерениями выстелена дорога в АД.

Сообщение а так?

Option Explicit
Public trt As Boolean

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If trt Then trt = False: Cancel = True: Exit Sub
Application.DisplayFullScreen = False
ActiveWindow.DisplayHeadings = True
Application.DisplayFormulaBar = True
trt = True
If Workbooks.Count = 1 Then
ThisWorkbook.Saved = True
Application.Quit
Else
If Workbooks.Count = 2 Then
If Workbooks(1).Name = «PERSONAL.XLSB» Or Workbooks(2).Name = «PERSONAL.XLSB» Then
Workbooks(«PERSONAL.XLSB»).Close False
ThisWorkbook.Saved = True
Application.Quit
trt = False
End If
Else
End If
End If
ThisWorkbook.Saved = True
End Sub

Private Sub Workbook_Open()
Application.DisplayFullScreen = True
End Sub

событие Workbook_BeforeClose запускается когда вы уже закрываете эту книгу
еще раз в нем вызывать закрытие книги не требуется
это будет выполнено по завершению этой процедуры.

переменная trt чтобы повторно событие не запустилось. Автор — K-SerJC
Дата добавления — 11.03.2020 в 12:59

Источник

Adblock
detector

2 / 2 / 0

Регистрация: 01.11.2013

Сообщений: 196

1

20.05.2019, 16:02. Показов 3496. Ответов 4


Студворк — интернет-сервис помощи студентам

Дамы и господа, есть код:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
            Excel.Application ExApp = new Microsoft.Office.Interop.Excel.Application();
            Excel.Workbook ExWb = ExApp.Workbooks.Open(path, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                                  Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                                  Type.Missing, Type.Missing, Type.Missing, Type.Missing);
 
            ExApp.DisplayAlerts = false;
            ExApp.Interactive = false;
            ExApp.Visible = true;
 
            /* Бизнес-логика=) */
 
            ExWb.Close(true, Type.Missing, Type.Missing);
            ExApp.Quit();

После его выполнения в диспетчере задач остается висеть процесс Excle.exe, окно закрывается как положено, никаких диалоговых окон и предупреждений нет, подскажите, что не так с процессом, как его закрыть?



0



Как закрыть Эксель, если не закрывается? Воспользуйтесь комбинацией Alt+F4, запустите «Диспетчер задач» и удалите процесс Excel, снимите задачу для приложения или просто перезагрузите компьютер / ноутбук (рекомендуется в крайнем случае). Ниже подробно рассмотрим, как действовать при возникновении подобных проблем, и какими методами можно закрыть программу.

Причины, почему не закрывается Excel

Существует множество причин, почему не закрывается Эксель, как и в случае с другими программами. К основным объяснениям можно отнести:

  1. Ошибка в программном коде.
  2. Конфликты с другими ПО.
  3. Загрязненная операционная система.
  4. Применение не подходящей версии Виндовс.
  5. Сбои работы жесткого диска.
  6. Дефицит оперативной памяти.
  7. Действие вирусов.
  8. Прочие причины.

Что делать

При возникновении зависания нужно сначала разобраться, как закрыть программу, если при нажатии на «крестик» Эксель не закрывается. Рассмотрим основные варианты.

Используйте горячие клавиши

Первое, что стоит сделать при возникновении подобных проблем — попробовать закрыть приложение с помощью комбинации горячих кнопок. Чаще всего работает Alt+F4. В ее задачи входит принудительное прекращение работы процесса.

Закройте приложение через специальную панель

Если рассмотренный метод не помогает, можно использовать еще один метод, как закрыть Эксель — сделать это с помощью вызова специальной панели. Для этого жмите на Ctrr+Alt+Del, после чего войдите в «Диспетчер задач» и во вкладку «Процессы». Здесь найдите нужный вариант с названием Excel, жмите правой кнопкой мышки и кликните «Снять задачу». Как вариант, можно зайти в раздел «Служба приложений» и отключить нужный софт там.

Специальная программа

Бывают ситуации, когда не закрывается файл Эксель из-за отсутствия процесса в списке. В таком случае может потребоваться специальная программа — Process Exprorer. Она не требует установки. Достаточно скачать ее с официального сайта docs.microsoft.com/ru-ru/previous-versions/bb896653(v=msdn.10)?redirectedfrom=MSDN, запустить и найти нужный процесс.  В отличие от «Диспетчера задач» здесь отображаются все процессы. Найдите интересующий, кликните на него правой кнопкой мышки и выберите кнопку удаления.

Альтернативный вариант

Крайний метод, что делать, если не закрывается Эксель при выполнении всех рассмотренных выше шагов — принудительно перезапустить компьютер / ноутбук. После запуска программа будет закрыта, и ее можно будет снова запустить. При этом сохраняется риск сбоев во время работы, поэтому нужно определить причину.

Что еще сделать после закрытия / во время работы

Ситуация, когда не закрываются файлы Excel, нужно разобраться с дальнейшими шагами. Важно выявить причину и избежать подобных ситуаций в будущем. Сделайте следующие шаги.

Убедитесь, что Эксель не пользуется другим процессом

В ситуации, когда Excel занята другим процессом, эти данные будут отображаться в нижней части окна. Если параллельно какие-то приложения пытаются выполнить действия, Эксель не будет отвечать, и закрыть его не получится. В таком случае дождитесь, пока задание выполниться, после чего сделайте еще одну попытку.

Проверьте систему на вирусы

Если Excel не закрывается, проверьте ПК / ноутбук на вирусы. Проблемы с прекращением работы могут возникнуть на фоне действия вредоносного ПО. В случае его удаления можно попробовать закрыть контент, и это происходит без проблем.

Решение проблем с надстройками

Применение надстроек упрощает работу с Эксель, но параллельно могут возникать конфликты. Попробуйте запустить приложение без надстроек и проверьте, удастся ли закрыть приложение. При работе в Виндовс 10 кликните на Win+R, а после — Excel / safe. Далее жмите «ОК». Если проблему удалось устранить, кликните на «Файл», а далее «Параметры» и «Надстройки».

Выберите «Надстройки СОМ» и жмите на кнопку «Перейти». После очистки флажков жмите «ОК». После откройте и попробуйте закрыть Эксель. Если он все равно не закрывается, причина может быть в другом.

Убедитесь, что файл не создается другим приложением. В таком случае некоторые функции Excel могут работать некорректно.

Дополнительные советы

Жалобы, мол, не могу закрыть Эксель, часто встречаются в Интернете. Пользователи не могут разобраться с зависанием и часто решают вопрос кардинально и путем отключения ПК / ноутбука. Но в большинстве случаев проблему можно решить более простым путем:

  1. Убедитесь, что софт не закрывается именно из-за внутренних проблем. Бывают ситуации, что неисправность именно в компьютере. Распространенная ситуация, когда закрыть Эксель не удается из-за дефицита оперативной памяти или сбоях в работе процессора. В таком случае нужно попробовать закрыть другое «тяжелое» ПО и повторить попытку.
  2. Переустановите программу. Если с Excel регулярно возникают проблемы, возможно, он установился некорректно и требует перестановки. Попробуйте удалить и установить заново программу.
  3. Обновите Excel, если он регулярно не закрывается, до последней версии.
  4. Убедитесь, что версия и разрядность Виндовс соответствуют требованиям.
  5. Выждите время. Многие пользователи слишком торопятся и хотят, чтобы ПО закрывалось мгновенно. Но иногда программа немного зависает. Нужно просто подождать и закрыть ее через несколько минут.

Зная, как закрыть Эксель, и почему он не закрывается, вы сможете решить проблему с программой и исключить ее появление в будущем. Для начала перепробуйте приведенные выше методы, а перезапуск / выключение оставьте на крайний случай. Это связано с тем, что при грубой перезагрузки многая информация может быть утеряна. Также не забывайте сохраняться перед попыткой закрытия, чтобы не допустить потери важных файлов.

В комментариях расскажите, какой из приведенных советов вам действительно помог, и какие еще шаги можно реализовать для решения ситуации.

Отличного Вам дня!

 

Доброго времени суток Всем! :)  

      Подскажите пожалуйста, правильно ли я добавил метод «Quit»?!  

  ————-  
‘какой-то код…  
With Application  
.DisplayAlerts = True  
.Visible = True  
.EnableCancelKey = xlInterrupt  
.Quit  
End With  
ThisWorkbook.Close False  
————-  

  Хотел добиться закрытия (полностью закрыть) Excel и кажется добился, но мало ли что. :)

 

слэн

Пользователь

Сообщений: 5192
Регистрация: 16.01.2013

после  

  .quit  

  работа приложения завершится, остальные строки избыточны   :)

 

Hugo

Пользователь

Сообщений: 23250
Регистрация: 22.12.2012

Т.е. End With можно не писать? :)

 

Тоесть правильно?! :)  

  Мне нужно закрыть книгу Excel еще, если до «.quit» — книга не закрывается :)

 

Кажется понял теперь :)  

  Если нужно завершить выполнение приложения, тогда пишем так:  
————-  
‘какой-то код…  
With Application  
‘.DisplayAlerts = True  
‘.Visible = True  
‘.EnableCancelKey = xlInterrupt  
.Quit  
End With  
ThisWorkbook.Close False  
————-  

  слэн, правильно я Вас понял?!

 

Hugo

Пользователь

Сообщений: 23250
Регистрация: 22.12.2012

ThisWorkbook.Close False    
лишнее, до него дело не дойдёт.

 

Игорь, самое интересное что и выше ничего не нужно получается. В справке читал, но не все понятно, так как плохо понимаю на английском, только догадываюсь. :(  

  Если забрать «ThisWorkbook.Close False» — появляется окно с предупреждением (сохранить). Получается, что доходит.

 

Hugo

Пользователь

Сообщений: 23250
Регистрация: 22.12.2012

Не, не доходит. Просто видит несохранённые изменения и вопит. Сохраните книгу перед Quit или Application.DisplayAlerts = False выше поставьте.

 

Но, вообще-то, с точки зрения «user-experience», насильственное закрытие офисного приложения при закрытии файла, да еще не спросив пользователя, ооооочень плохая идея. Сами посудите, почему вы должны решать за пользователя, что, если ваш файл закрыт, то ему Excel уже не нужен? И потом, вам еще надо прописать код на случай, если у пользователя открыты другие файлы.

 

Hugo

Пользователь

Сообщений: 23250
Регистрация: 22.12.2012

Ну да, мне пришлось всю работу сперва позакрывать, прежде чем эту мелочь тестить… :)

 

Спасибо за советы и помощь! ;)  

  Просто никогда еще не применял этот метод, а тут решил красиво закрыть свое приложение, которое может работать, если другие книги Excel не открыты — иначе закроется.  

  Я проверку сделал, если книги все же открыты — без этого метода, если нет — с ним. :)  

  P.S. Все-таки пока сам не попробуешь (прощупаешь) до конца не поймешь. ;)

 

KuklP

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

#12

27.08.2010 17:16:13

Правильней будет сообщить Эксу:  
ThisWorkbook.Saved = True  
а дальше уже:  
With Application….  
Если нет других открытых книг, Экс молча покинет зал.  
Но все это с учетом замечания KL.

Я сам — дурнее всякого примера! …

Понравилась статья? Поделить с друзьями:
  • Quit excel from vba
  • Quieter is not a word
  • Radio button для word
  • Quick words in word
  • Quick word to pdf