Excel workbooks close — Мир ПК

Как правильно закрыть книгу Excel — WorkBook или WorkBooks

24.12.2014, 01:13

Как правильно закрыть excel, после того как я закрываю workbook?
как правильно закрыть сам excel, после того как я закрываю workbook? ObjExcel.close? не работает .

Как правильно закрыть Excel
Вопрос в следующем — нужно из проги открыть книгу Excel, записать на Листе информацию и, сохранив.

Как правильно закрывать книгу Excel?
Из проги открываю Xl в фоновом режиме, поработав с ним, закрываю. После необходимо открывать.

Как правильно закрыть Excel из Access97?
В Access97 формирую сложным образом xls_файл. После этого Excel надо закрыть. Делаю Quit, Close,set.

24.12.2014, 09:582

Delphi
24.12.2014, 11:22 [ТС] 3

Так не работает. Выполняю в блоке try. except . вызывает исключение.

А так ExcelApp.Workbooks.Close работает.
Объясните разницу между Workbook и Workbooks. Это типа закрытие активной книги или закрытие всех книг ??
И еще вопросик. Dro >

24.12.2014, 11:45 4
24.12.2014, 11:50 [ТС] 5

Не знаю тогда ) Может потому что у меня excel 2010, но Workbook вызывает исключение, а Workbooks нет и все работает нормально. Excel закрывается.

Добавлено через 1 минуту
Кстати при создании книги пишу Workbooks.Add а не Workbook. А вы как ?

24.12.2014, 11:56 6

serg55, чтобы не заморачиваться попробуйте закрывать книгу так

Delphi
24.12.2014, 12:15 [ТС] 7
24.12.2014, 12:54 8

Решение

Здесь нужна поправка. ExcelApp.Workbook — такого объекта нет в объектной структуре MS Excel. В MS Excel есть тип: Excel.Workbook. Этот тип описывает отдельную рабочую книгу. А вот объект ExcelApp.Workbooks — есть. Этот объект является объектом-коллекцией, который обеспечивает доступ ко всем рабочим книгам, которые открыты в текущем сеансе работы MS Excel. И есть соответствующий тип: Excel.Workbooks. Т. е. объект типа Excel.Workbooks обеспечивает доступ к перечню объектов типа Excel.Workbook.
Каждый объект типа Excel.Workbook имеет свойство Excel.Workbook.Worksheets — оно содержит ссылку на коллекцию рабочих листов книги. Тип такого объекта: Excel.Worksheets. Объект этого типа обеспечивает доступ к отдельным рабочим листам рабочей книги. А отдельный рабочий лист имеет тип Excel.Worksheet.
Рабочая книга имеет ссылку на ещё одну коллекцию листов — Excel.Workbook.Sheets. Эта коллекция содержит все листы рабочей книги — рабочие листы и листы диаграмм.

Пример с пояснениями:

Delphi
24.12.2014, 12:59 [ТС] 9
24.12.2014, 13:20 10
Delphi
24.12.2014, 13:24 [ТС] 11
24.12.2014, 13:27 12
24.12.2014, 13:43 [ТС] 13

Dro >
Добавлено через 3 минуты
Mawrat исчерпывающе ответил
<Освобождение интерфейсов. Это делается через обнуление ссылок на эти интерфейсы.
Обнулить надо все ссылки на интерфейсы. Т. е., обнулить надо все соответствующие
переменные: exApp, exBooks, exBook, exSheets, exSheet. Если ссылки на интерфейсы
не обнулить, то объекты, связанные с этими интерфейсами, так и останутся в памяти.>

1. Если переменные exApp, exBooks, exBook, exSheets, exSheet объявлены на локальном
уровне, т. е., внутри подпрограммы — метода, процедуры или функции, то вручную можно
эти переменные не обнулять. Потому, что перед тем, как управление покинет тело
подпрограммы, такие переменные будут автоматически обнулены кодом завершения.
Такой код завершения добавляется компилятором во все подпрограммы.

2. Если переменные exApp, exBooks, exBook, exSheets, exSheet объявлены на глобальном
уровне, то такие переменные надо обнулить вручную. Обнуление следует выполнить
в момент, когда известно, что связанные объекты в программе больше не понадобятся.>

//Обнуление ссылок на интерфейсы.
VarClear(exApp); //Или так: exApp := Unassigned;
VarClear(exBooks); //Или так: exBooks := Unassigned;
VarClear(exBook); //Или так: exBook := Unassigned;
VarClear(exSheets); //Или так: exSheets := Unassigned;
VarClear(exSheet); //Или так: exSheet := Unassigned;

Добавлено через 28 секунд
В общем все понятно ))

«How to suppress Save Changes» prompt when you close a workbook in Excel

Summary

In Microsoft Excel, you can create a Microsoft Visual Basic for Applications (VBA) macro that suppresses the Save Changes prompt when you close a workbook. This can be done either by specifying the state of the workbook Saved property, or by suppressing all alerts for the workbook.

More Information

NOTE: Microsoft provides programming examples for illustration only, without warranty either expressed or implied. This includes, but is not limited to, the implied warranties of merchantability or fitness for a particular purpose. This article assumes that you are familiar with the programming language that is being demonstrated and with the tools that are used to create and to debug procedures. Microsoft support engineers can help explain the functionality of a particular procedure. However, they will not modify these examples to provide added functionality or construct procedures to meet your specific requirements.

To prepare for implementing either of the examples below, perform these steps first:

Start Excel and open a new workbook.

Press ALT+F11 to start the Visual Basic editor.

On the Insert menu, click Module.

Type the sample macro code into the module sheet.

Press ALT+F11 to return to Excel.

In Microsoft Office Excel 2003 and in earlier versions of Excel, choose Macro from the Tools menu, and then click Macros.

In Microsoft Office Excel 2007, click Macros in the Code group on the Developer tab.

If the Developer tab is not available, consider doing this:

a. Click the Microsoft Office Button, and then click Excel Options.

b. In the Popular category, under Top options for working with Excel, click to select the Show
Developer tab in the Ribbon check box, and then click OK.

Select the macro that you want, and then click Run.

The Saved property returns the value False if changes have been made to a workbook since it was last saved.

You can use the reserved subroutine name Auto_Close to specify a macro that should run whenever a workbook is closed. In doing so, you can control how the document is handled when the user closes the documents in Excel.

Example 1: Close the workbook without saving changes

To force a workbook to close without saving any changes, type the following code in a Visual Basic module of that workbook:

When the Saved property is set to True, Excel responds as though the workbook has already been saved and no changes have occurred since that last save.

The DisplayAlerts property of the program can be used for the same purpose. For example, the following macro turns DisplayAlerts off, closes the active workbook without saving changes, and then turns DisplayAlerts on again.

You can also use the SaveChanges argument of the Close method.

The following macro closes the workbook without saving changes:

Example 2: Close the workbook and save the changes

To force a workbook to save changes, type the following code in a Visual Basic module of that workbook:

If ThisWorkbook.Saved = False Then

ThisWorkbook.Save End If

This subprocedure checks to see if the file Saved property has been set to False. If so, the workbook has been changed since the last save, and those changes are saved.

«How to suppress Save Changes» prompt when you close a workbook in Excel

Summary

In Microsoft Excel, you can create a Microsoft Visual Basic for Applications (VBA) macro that suppresses the Save Changes prompt when you close a workbook. This can be done either by specifying the state of the workbook Saved property, or by suppressing all alerts for the workbook.

More Information

NOTE: Microsoft provides programming examples for illustration only, without warranty either expressed or implied. This includes, but is not limited to, the implied warranties of merchantability or fitness for a particular purpose. This article assumes that you are familiar with the programming language that is being demonstrated and with the tools that are used to create and to debug procedures. Microsoft support engineers can help explain the functionality of a particular procedure. However, they will not modify these examples to provide added functionality or construct procedures to meet your specific requirements.

To prepare for implementing either of the examples below, perform these steps first:

Start Excel and open a new workbook.

Press ALT+F11 to start the Visual Basic editor.

On the Insert menu, click Module.

Type the sample macro code into the module sheet.

Press ALT+F11 to return to Excel.

In Microsoft Office Excel 2003 and in earlier versions of Excel, choose Macro from the Tools menu, and then click Macros.

In Microsoft Office Excel 2007, click Macros in the Code group on the Developer tab.

If the Developer tab is not available, consider doing this:

a. Click the Microsoft Office Button, and then click Excel Options.

b. In the Popular category, under Top options for working with Excel, click to select the Show
Developer tab in the Ribbon check box, and then click OK.

Select the macro that you want, and then click Run.

The Saved property returns the value False if changes have been made to a workbook since it was last saved.

You can use the reserved subroutine name Auto_Close to specify a macro that should run whenever a workbook is closed. In doing so, you can control how the document is handled when the user closes the documents in Excel.

Example 1: Close the workbook without saving changes

To force a workbook to close without saving any changes, type the following code in a Visual Basic module of that workbook:

When the Saved property is set to True, Excel responds as though the workbook has already been saved and no changes have occurred since that last save.

The DisplayAlerts property of the program can be used for the same purpose. For example, the following macro turns DisplayAlerts off, closes the active workbook without saving changes, and then turns DisplayAlerts on again.

You can also use the SaveChanges argument of the Close method.

The following macro closes the workbook without saving changes:

Example 2: Close the workbook and save the changes

To force a workbook to save changes, type the following code in a Visual Basic module of that workbook:

If ThisWorkbook.Saved = False Then

ThisWorkbook.Save End If

This subprocedure checks to see if the file Saved property has been set to False. If so, the workbook has been changed since the last save, and those changes are saved.

Закрытие процесса приложения Excel в C# после доступа к данным

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

Я использую этот код, чтобы открыть файл Excel :

и для доступа к данным, я использую этот код :

Я вижу подобные вопросы в stackoverflow, такие как этот вопрос и этот, и тестовые ответы, но он не работает.

15 ответов:

при закрытии рабочей книги у вас есть три необязательных параметра:

Workbook.Close(false) или если вы делаете позднюю привязку, иногда проще использовать ноль Workbook.Close(0) Вот как я сделал это при автоматизации закрытия книги.

также я пошел и посмотрел документацию для него, и нашел его здесь: Книга Excel Закрыть

попробуйте это.. это сработало для меня. вы должны освободить этот объект приложения xl, чтобы остановить процесс.

подумайте об этом, это убивает процесс:

кроме того, вы пытались просто закрыть его нормально?

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

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

это решило проблему для меня. Ваш код становится:

и затем освободите все эти объекты:

я заворачиваю это в try <> finally <> чтобы убедиться, что все выйдет, даже если что-то пойдет не так (что может пойти не так?), например,

убить Excel не всегда легко; смотрите эту статью: 50 способов убить Excel

эта статья принимает лучшие советы от Microsoft (MS Knowlege базовая статья) о том, как заставить Excel выйти красиво, но затем также удостоверяется в этом, убивая процесс, если это необходимо. Мне нравится иметь второй парашют.

убедитесь, что вы закрыли все открытые книги, вышли из приложения и освободили объект xlApp. Наконец, проверьте, чтобы увидеть, если процесс все еще жив, и если да, то убейте его.

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

вот код, который я использую: (работает все время)

excelBook.Закрывать(); excelApp.Выход(); добавьте конец кода, этого может быть достаточно. он работает над моим кодом

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

надеюсь, что мой код может помочь кому-то в будущем. Я потратил более двух дней, чтобы решить эту проблему. Ниже приведен мой код:

вы можете убить процесс своими COM объект excel pid

добавить где-то ниже кода импорта dll

он закрывает последний 10 сек процесс с именем «Excel»

правильный способ закрыть весь процесс excel

на основе других решений. Я должен использовать это:

С помощью» MainWindowHandle», чтобы определить процесс и закрыть его.

excelObj: это мое приложение Interop excel objecto

использовать переменную для каждого объекта Excel и петли Marshal.ReleaseComObject >0 . Без цикла процесс Excel по-прежнему остается активным.

мы можем закрыть приложение Excel при преобразовании xls в xlsx с помощью следующего кода. Когда мы выполняем этот вид задачи, то приложение Excel работает в диспетчере задач, мы должны закрыть этот excel, который работает в фоновом режиме. Interop-это Com-компонент, чтобы освободить com-компонент, который мы использовали Marshal.FinalReleaseComObject.

большинство методов работает, но процесс excel всегда остается до закрытия приложения.

когда убить excel процесс один раз он не может быть выполнен еще раз в том же потоке — не знаю, почему.

этот GetWindowThreadProcessId находит правильный идентификатор процесса o excell . После убивает его. Наслаждайся Этим.

Читать еще:  Как упорядочить номера в excel

Оценка статьи:
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка…

Ссылка на основную публикацию

wpDiscuz

Запись опубликована в рубрике Excel. Добавьте в закладки постоянную ссылку.