kshyms -4 / 4 / 0 Регистрация: 21.09.2015 Сообщений: 333 |
||||
1 |
||||
11.06.2021, 08:10. Показов 3543. Ответов 14 Метки word, закрыть (Все метки)
Как правильно закрыть активный документ word без сохранения
0 |
I can bite 3699 / 3131 / 694 Регистрация: 13.04.2015 Сообщений: 7,324 |
||||
11.06.2021, 08:12 |
2 |
|||
ЕМНИП
0 |
kshyms -4 / 4 / 0 Регистрация: 21.09.2015 Сообщений: 333 |
||||
11.06.2021, 08:26 [ТС] |
3 |
|||
Не закрывается документ всё тоже самое!!!
0 |
bite 3699 / 3131 / 694 Регистрация: 13.04.2015 Сообщений: 7,324 |
|
11.06.2021, 08:31 |
4 |
Не закрывается документ Сейчас проверю Добавлено через 3 минуты Добавлено через 45 секунд
doc = objWord.ActiveDocument Эту строчку зачем добавили? или у вас несколько открытых документов?
0 |
-4 / 4 / 0 Регистрация: 21.09.2015 Сообщений: 333 |
|
11.06.2021, 08:34 [ТС] |
5 |
‘doc = objWord.ActiveDocument
0 |
bite 3699 / 3131 / 694 Регистрация: 13.04.2015 Сообщений: 7,324 |
|
11.06.2021, 08:35 |
6 |
objWord.Visible = False Сделайте objWord.Visible = true, и увидите, что всё открывается и закрывается Добавлено через 50 секунд
Всё тоже самое. Видео снять? С чего вы решили, что не закрывается?
0 |
kshyms -4 / 4 / 0 Регистрация: 21.09.2015 Сообщений: 333 |
||||
11.06.2021, 08:37 [ТС] |
7 |
|||
Не закрывается документ. Всё тоже самое.
0 |
bite 3699 / 3131 / 694 Регистрация: 13.04.2015 Сообщений: 7,324 |
|
11.06.2021, 08:38 |
8 |
0 |
-4 / 4 / 0 Регистрация: 21.09.2015 Сообщений: 333 |
|
11.06.2021, 08:50 [ТС] |
9 |
Не закрывается документ. Всё тоже самое. Миниатюры
0 |
bite 3699 / 3131 / 694 Регистрация: 13.04.2015 Сообщений: 7,324 |
|
11.06.2021, 08:52 |
10 |
kshyms, посмотрите, может в диспетчере висят незавершенные процессы Ворд и как-то мешают закрытию? Добавлено через 1 минуту
0 |
-4 / 4 / 0 Регистрация: 21.09.2015 Сообщений: 333 |
|
11.06.2021, 08:58 [ТС] |
11 |
Перезагрузил компьютер, запустил приложение и без изменений.
0 |
bite 3699 / 3131 / 694 Регистрация: 13.04.2015 Сообщений: 7,324 |
|
11.06.2021, 08:59 |
12 |
без изменений. —
или у вас в коде что-то еще есть
1 |
kshyms -4 / 4 / 0 Регистрация: 21.09.2015 Сообщений: 333 |
||||||||
11.06.2021, 09:16 [ТС] |
13 |
|||||||
Не выводит! Значит действительно, процессы какие -то не завершены и что то мешает закрытию документа. Но приложение само закрывается. Добавлено через 6 минут
Работает всё!
0 |
bite 3699 / 3131 / 694 Регистрация: 13.04.2015 Сообщений: 7,324 |
|
11.06.2021, 11:03 |
14 |
objWord.Visible = False Спрятать != закрыть
0 |
Модератор 3878 / 3200 / 482 Регистрация: 27.01.2014 Сообщений: 5,842 |
|
04.07.2021, 16:14 |
15 |
kshyms, я давно об этом явлении говорил. Незнаю почему так, но действенный способ — это вызвать работу с документом и его закрытие В ОТДЕЛЬНОМ методе/процедуре… Щас поищу, в готовых решениях. Добавлено через 1 минуту
1 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
04.07.2021, 16:14 |
Помогаю со студенческими работами здесь Закрыть приложение Word БЕЗ сохранения документов и без запроса Добавить шаблон в активный документ MS Word создаю… Сделать вывод массива в активный документ Word Надо закрыть через VBA Excel ,без сохранения и без выскакивания запросов на сохранеие Закрыть документ Word Не могу закрыть документ WORD Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 15 |
Использование Word в приложениях на Visual Basic 6 открывает широчайшие возможности для создания профессионально оформленных документов (например отчетов). Это часто необходимо при работе в фирме или на предприятии для обеспечения документооборота. Основным преимуществом использования Wordа в этом случае является то, что практически на всех компьютерах, используемых в фирмах и на предприятиях установлены Windows и пакет Microsoft Office. Поэтому подготовленные документы Word не требуют каких-либо дополнительных усилий для их просмотра, печати и редактирования. Единственное что нужно помнить, это то что работа через автоматизацию OLE (связывание и внедрение объектов) на деле оказывается довольно медленной технологией, хотя и очень полезной.
Чтобы использовать объекты Word в Visual Basic , необходимо инсталлировать сам Word. После этого вы получаете в своё распоряжение библиотеку Microsoft Word Object Library, которую нужно подключить к текущему проекту через диалоговое окно «Разработать»>>»Ссылки» (References) и указать Microsoft Word 9.0 Object Library (для Word 2000).
Два самых важных объекта Word это Word.Application и Word.Document. Они обеспечивают доступ к экземпляру приложения и документам Word.
Поэтому в раздел Generals «Общее» формы введите следующий код для объявления объектных переменных приложения Word и документа Word.
Dim WordApp As Word.Application ' экземпляр приложения Dim DocWord As Word.Document' экземпляр документа
Чтобы создать новый экземпляр Word, введите такой код кнопки;
Private Sub Комманда1_Click() 'создаём новый экземпляр Word-a Set WordApp = New Word.Application 'определяем видимость Word-a по True - видимый, 'по False - не видимый (работает только ядро) WordApp.Visible = True 'создаём новый документ в Word-e Set DocWord = WordApp.Documents.Add '// если нужно открыть имеющийся документ, то пишем такой код 'Set DocWord = WordApp.Documents.Open("C:DDD.doc") 'активируем его DocWord.Activate End Sub
Для форматирования печатной области документа используйте данный код:
(вообще-то Word использует для всех размеров своих элементов пункты, поэтому для использования других единиц измерения, необходимо использовать встроенные функции форматирования.)
Например:
- CentimetersToPoints(Х.ХХ) — переводит сантиметры в пункты.
- MillimetersToPoints(X.XX) — переводит миллиметры в пункты
Private Sub Комманда2_Click() 'отступ слева "2,0 сантиметра" DocWord.Application.Selection.PageSetup.LeftMargin = CentimetersToPoints(2) 'отступ справа "1,5 сантиметра" DocWord.Application.Selection.PageSetup.RightMargin = CentimetersToPoints(1.5) 'отступ сверху "3,5 сантиметра" DocWord.Application.Selection.PageSetup.TopMargin = CentimetersToPoints(3.5) 'отступ снизу "4,45 сантиметра" DocWord.Application.Selection.PageSetup.BottomMargin = CentimetersToPoints(4.45) End Sub
Небольшое отступление.
Для того чтобы в своём приложении не писать постоянно одно и тоже имя объекта, можно использовать оператор With.
Например код находящейся выше можно переписать так:
With DocWord.Application.Selection.PageSetup .LeftMargin = CentimetersToPoints(2) .RightMargin = CentimetersToPoints(1.5) .TopMargin = CentimetersToPoints(3.5) .BottomMargin = CentimetersToPoints(4.45) End With
Если вам необходимо создать документ Word с нестандартным размером листа, то используйте данный код:
With DocWord.Application.Selection.PageSetup .PageWidth = CentimetersToPoints(20) 'ширина листа (20 см) .PageHeight = CentimetersToPoints(25) 'высота листа (25 см) End With
Данный код меняет ориентацию страницы (практически меняет местами значения ширины и высоты листа):
DocWord.Application.Selection.PageSetup.Orientation = wdOrientLandscape
- wdOrientLandscape — альбомная ориентация ( число 1)
- wdOrientPortrait — книжная ориентация ( число 0)
Для сохранения документа под новым именем и в определенное место
используйте данный код код:
'сохраняем документ как DocWord.SaveAs "c:DDD.doc"
После такого сохранения вы можете про ходу работы с документом сохранять его.
'сохраняем документ DocWord.Save
Или проверить, были ли сохранены внесенные изменения свойством Saved и если изменения не были сохранены — сохранить их;
If DocWord.Saved=False Then DocWord.Save
Завершив работу с документом, вы можете закрыть сам документ методом Close и сам Word методом Quit.
'закрываем документ (без запроса на сохранение) DocWord.Close True 'закрываем Word (без запроса на сохранение) WordApp.Quit True 'уничтожаем обьект - документ Set DocWord = Nothing 'уничтожаем обьект - Word Set WordApp = Nothing
Если в методах Close и Quit не использовать необязательный параметр True то Word запросит согласие пользователя (если документ не был перед этим сохранён) на закрытие документа.
Если вам необходимо оставить Word открытым, просто не используйте методы Close и Quit.
Если вам необходимо поставить пароль на документ, то используйте код:
DocWord.Protect wdAllowOnlyComments, , "123456789"
Пример программы можно скачать здесь.
title | keywords | f1_keywords | ms.prod | api_name | ms.assetid | ms.date | ms.localizationpriority |
---|---|---|---|---|---|---|---|
Application.Quit method (Word) |
vbawd10.chm158336081 |
vbawd10.chm158336081 |
word |
Word.Application.Quit |
0279d848-a8b7-dac7-1e84-a55c72789e3b |
06/08/2017 |
medium |
Application.Quit method (Word)
Quits Microsoft Word and optionally saves or routes the open documents.
Syntax
expression.Quit (SaveChanges, OriginalFormat, RouteDocument)
expression Required. A variable that represents an Application object.
Parameters
Name | Required/Optional | Data type | Description |
---|---|---|---|
SaveChanges | Optional | Variant | Specifies whether Word saves changed documents before closing. Can be one of the WdSaveOptions constants. |
OriginalFormat | Optional | Variant | Specifies the way Word saves documents whose original format was not Word Document format. Can be one of the WdOriginalFormat constants. |
RouteDocument | Optional | Variant | True to route the document to the next recipient. If the document does not have a routing slip attached, this argument is ignored. |
Example
This example closes Word and prompts the user to save each document that has changed since it was last saved.
Application.Quit SaveChanges:=wdPromptToSaveChanges
This example prompts the user to save all documents. If the user clicks Yes, all documents are saved in the Word format before Word closes.
Dim intResponse As Integer intResponse = _ MsgBox("Do you want to save all documents?", vbYesNo) If intResponse = vbYes Then Application.Quit _ SaveChanges:=wdSaveChanges, OriginalFormat:=wdWordDocument
See also
Application Object
[!includeSupport and feedback]
Создание нового экземпляра приложения Word из кода VBA Excel или подключение к открытому для работы с документами. Функции CreateObject и GetObject.
Работа с Word из кода VBA Excel
Часть 1. Управление приложением Word
[Часть 1] [Часть 2] [Часть 3] [Часть 4] [Часть 5] [Часть 6]
Создание объекта Word.Application
Экземпляр приложения Word необходим для того, чтобы с его помощью создавать новые документы или открывать существующие для редактирования из кода VBA Excel.
Создать новый экземпляр объекта Word.Application можно при помощи раннего или позднего связывания, используя при позднем связывании функцию CreateObject. Подключиться к открытому экземпляру приложения Word можно только при помощи позднего связывания, используя функцию GetObject.
Раннее связывание приложения Word
Создание нового экземпляра Word.Application и присвоение ссылки на него переменной myWord:
‘Создание экземпляра приложения Word ‘с ранней привязкой одной строкой Dim myWord As New Word.Application ‘Создание экземпляра приложения Word ‘с ранней привязкой двумя строками Dim myWord As Word.Application Set myWord = New Word.Application |
Для раннего связывания переменной с объектом Word.Application необходимо подключить в редакторе VBA Excel ссылку на библиотеку Microsoft Word Object Library, если она не подключена. Подключается ссылка в окне «References VBAproject», перейти в которое можно через главное меню редактора: Tools–>References…
Раннее связывание позволяет при написании кода использовать лист подсказок для выбора и вставки свойств и методов привязанных объектов (Auto List Members). Если проект VBA Excel создается на заказ, то, после его завершения, раннее связывание следует заменить на позднее, так как на компьютере пользователя может не оказаться нужной библиотеки, и код работать не будет.
Позднее связывание приложения Word
Создание нового экземпляра Word.Application с помощью функции CreateObject и присвоение ссылки на него переменной myWord:
Dim myWord As Object Set myWord = CreateObject(«Word.Application») |
Присвоение переменной myWord ссылки на открытый экземпляр приложения Word с помощью функции GetObject:
Dim myWord As Object Set myWord = GetObject(, «Word.Application») |
Если открытого приложения Word нет, выполнение функции GetObject приведет к ошибке. Чтобы ее избежать, следует предусмотреть создание нового экземпляра Word.Application с помощью функции CreateObject, если открытое приложение не будет найдено (смотрите пример 3).
В программы VBA Excel, работающие с Word, следует включать обработчик ошибок.
Закрытие объекта Word.Application
Новый экземпляр приложения Word открывается в фоновом режиме. Если необходимо его отобразить на экране перед завершением программы, используйте следующий код:
‘отображаем приложение Word myWord.Visible = True ‘освобождаем переменную от ссылки Set myWord = Nothing |
Если перед завершением процедуры VBA Excel необходимо приложение Word закрыть, используйте метод Quit:
‘закрываем приложение Word myWord.Quit ‘освобождаем переменную от ссылки Set myWord = Nothing |
Если переменная не содержит ссылку на приложение (myWord = Nothing), метод Quit возвратит ошибку. Чтобы этого не произошло, перед применением метода Quit необходимо проверить наличие ссылки в переменной myWord (смотрите пример 3).
Пример 1
Создаем новый экземпляр объекта Word.Application с ранним связыванием и отображаем его на экране:
Sub Primer1() Dim myWord As New Word.Application ‘———- ‘блок операторов для создания, открытия ‘и редактирования документов Word ‘———- myWord.Visible = True Set myWord = Nothing End Sub |
Запустите код примера 1 на выполнение. Вы увидите появившийся на панели задач ярлык приложения Word. Перейдите на него и закройте приложение вручную.
Пример 2
Создаем новый экземпляр объекта Word.Application с поздним связыванием, отображаем его на экране, останавливаем программу и наблюдаем закрытие приложения методом Quit:
Sub Primer2() Dim myWord As Object Set myWord = CreateObject(«Word.Application») ‘———- ‘блок операторов для создания, открытия ‘и редактирования документов Word ‘———- myWord.Visible = True MsgBox «Остановка программы» myWord.Quit Set myWord = Nothing End Sub |
Запустите код примера 2 на выполнение. Закройте информационное окно MsgBox и смотрите, как исчезнет с панели задач ярлык приложения Word, созданного перед остановкой кода.
Пример 3
Пытаемся создать ссылку на открытый экземпляр приложения Word с помощью функции GetObject, а если открытого экземпляра нет, создаем новый с помощью функции CreateObject:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
Sub Primer3() Dim myWord As Object On Error Resume Next Set myWord = GetObject(, «Word.Application») If myWord Is Nothing Then Set myWord = CreateObject(«Word.Application») End If On Error GoTo Instr ‘———- ‘блок операторов для создания, открытия ‘и редактирования документов Word ‘———- myWord.Visible = True Set myWord = Nothing Exit Sub Instr: If Err.Description <> «» Then MsgBox «Произошла ошибка: « & Err.Description End If If Not myWord Is Nothing Then myWord.Quit Set myWord = Nothing End If End Sub |
Строка On Error Resume Next
передаст управление следующему оператору, если открытого экземпляра программы Word не существует, и выполнение функции GetObject приведет к ошибке. В этом случае будет создан новый экземпляр Word.Application с помощью функции CreateObject.
В код добавлен обработчик ошибок On Error GoTo Instr
, который поможет корректно завершить программу при возникновении ошибки. А также он позволит во время тестирования не наплодить большое количество ненужных экземпляров приложения Word. Проверяйте их наличие по Диспетчеру задач (Ctrl+Shift+Esc) и удаляйте лишние.
Строка Exit Sub
завершит процедуру, если она прошла без ошибок. В случае возникновения ошибки, будет выполнен код после метки Instr:
.
title | keywords | f1_keywords | ms.prod | api_name | ms.assetid | ms.date |
---|---|---|---|---|---|---|
Application.Quit Method (Word) |
vbawd10.chm158336081 |
vbawd10.chm158336081 |
word |
Word.Application.Quit |
0279d848-a8b7-dac7-1e84-a55c72789e3b |
06/08/2017 |
Application.Quit Method (Word)
Quits Microsoft Word and optionally saves or routes the open documents.
Syntax
expression . Quit( SaveChanges , Format , RouteDocument )
expression Required. A variable that represents an Application object.
Parameters
Name | Required/Optional | Data Type | Description |
---|---|---|---|
SaveChanges | Optional | Variant | Specifies whether Word saves changed documents before closing. Can be one of the WdSaveOptions constants. |
OriginalFormat | Optional | Variant | Specifies the way Word saves documents whose original format was not Word Document format. Can be one of the WdOriginalFormat constants. |
RouteDocument | Optional | Variant | True to route the document to the next recipient. If the document does not have a routing slip attached, this argument is ignored. |
Example
This example closes Word and prompts the user to save each document that has changed since it was last saved.
Application.Quit SaveChanges:=wdPromptToSaveChanges
This example prompts the user to save all documents. If the user clicks Yes, all documents are saved in the Word format before Word closes.
Dim intResponse As Integer intResponse = _ MsgBox("Do you want to save all documents?", vbYesNo) If intResponse = vbYes Then Application.Quit _ SaveChanges:=wdSaveChanges, OriginalFormat:=wdWordDocument
See also
Concepts
Application Object