Word application закрыть документ

kshyms

-4 / 4 / 0

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

Сообщений: 333

1

11.06.2021, 08:10. Показов 3543. Ответов 14

Метки word, закрыть (Все метки)


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

VB.NET
1
2
3
4
5
6
7
8
9
  Dim objWord As Object
 
        objWord = CreateObject("Word.Application")
        objWord.Visible = False
        objWord.Documents.Open(put + "лекции/" + ComboBox2.Text + ".docx")
 
        objWord = objWord.ActiveDocument
   
objWord.Quit(False)

Как правильно закрыть активный документ word без сохранения



0



I can

bite

3699 / 3131 / 694

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

Сообщений: 7,324

11.06.2021, 08:12

2

ЕМНИП

VB.NET
1
2
3
4
5
dim doc as object = objWord.Documents.Open(put + "лекции/" + ComboBox2.Text + ".docx")
 
        doc.Close(false)
   
objWord.Quit



0



kshyms

-4 / 4 / 0

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

Сообщений: 333

11.06.2021, 08:26

 [ТС]

3

VB.NET
1
2
3
4
5
6
7
8
 Dim objWord As Object
        objWord = CreateObject("Word.Application")
        objWord.Visible = False
        Dim doc As Object = objWord.Documents.Open(put + "лекции/" + ComboBox2.Text + ".docx")
        doc = objWord.ActiveDocument
 
doc.Close(False)
        objWord.Quit()

Не закрывается документ всё тоже самое!!!



0



bite

3699 / 3131 / 694

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

Сообщений: 7,324

11.06.2021, 08:31

4

Цитата
Сообщение от kshyms
Посмотреть сообщение

Не закрывается документ

Сейчас проверю

Добавлено через 3 минуты
Всё закрывается.

Добавлено через 45 секунд

Цитата
Сообщение от kshyms
Посмотреть сообщение

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

Цитата
Сообщение от kshyms
Посмотреть сообщение

objWord.Visible = False

Сделайте objWord.Visible = true, и увидите, что всё открывается и закрывается

Добавлено через 50 секунд

Цитата
Сообщение от kshyms
Посмотреть сообщение

Всё тоже самое.

Видео снять? С чего вы решили, что не закрывается?



0



kshyms

-4 / 4 / 0

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

Сообщений: 333

11.06.2021, 08:37

 [ТС]

7

VB.NET
1
2
3
4
5
6
7
8
9
        Dim objWord As Object
 
        objWord = CreateObject("Word.Application")
        objWord.Visible = True
        Dim doc As Object = objWord.Documents.Open(put + "лекции/" + ComboBox2.Text + ".docx")
        
doc.Close(False)
 
        objWord.Quit()

Не закрывается документ. Всё тоже самое.



0



bite

3699 / 3131 / 694

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

Сообщений: 7,324

11.06.2021, 08:38

8

Закрыть активный документ word без сохранения



0



-4 / 4 / 0

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

Сообщений: 333

11.06.2021, 08:50

 [ТС]

9

Не закрывается документ. Всё тоже самое.

Миниатюры

Закрыть активный документ word без сохранения
 



0



bite

3699 / 3131 / 694

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

Сообщений: 7,324

11.06.2021, 08:52

10

kshyms, посмотрите, может в диспетчере висят незавершенные процессы Ворд и как-то мешают закрытию?

Добавлено через 1 минуту
kshyms, или у вас в коде что-то еще есть, что влияет.



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

Цитата
Сообщение от kshyms
Посмотреть сообщение

без изменений.

Цитата
Сообщение от I can
Посмотреть сообщение

или у вас в коде что-то еще есть



1



kshyms

-4 / 4 / 0

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

Сообщений: 333

11.06.2021, 09:16

 [ТС]

13

VB.NET
1
TextBox21.Text = "Расчёт закончен."

Не выводит! Значит действительно, процессы какие -то не завершены и что то мешает закрытию документа. Но приложение само закрывается.

Добавлено через 6 минут

VB.NET
1
  objWord.Visible = False

Работает всё!



0



bite

3699 / 3131 / 694

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

Сообщений: 7,324

11.06.2021, 11:03

14

Цитата
Сообщение от kshyms
Посмотреть сообщение

objWord.Visible = False
Работает всё!

Спрятать != закрыть



0



Модератор

Эксперт .NET

3878 / 3200 / 482

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

Сообщений: 5,842

04.07.2021, 16:14

15

kshyms, я давно об этом явлении говорил. Незнаю почему так, но действенный способ — это вызвать работу с документом и его закрытие В ОТДЕЛЬНОМ методе/процедуре…

Щас поищу, в готовых решениях.

Добавлено через 1 минуту
Нашёл:
Готовые решения и полезные коды на Visual Basic .NET (Часть-1)



1



IT_Exp

Эксперт

87844 / 49110 / 22898

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

Сообщений: 92,604

04.07.2021, 16:14

Помогаю со студенческими работами здесь

Закрыть приложение Word БЕЗ сохранения документов и без запроса
Добрый день!
После открытия документа и выполнения манипуляций с ним Word выдает запрос о…

Добавить шаблон в активный документ MS Word
wordDoc = wordApp.Documents.Add(ref docPath, ref oMissing, ref oMissing, ref oMissing);

создаю…

Сделать вывод массива в активный документ Word
Sub Matrix()
Dim v As Variant
Dim iR As Range
Dim r As Long, c As Long
Dim n As Integer
Dim m…

Надо закрыть через VBA Excel ,без сохранения и без выскакивания запросов на сохранеие
Помогите чайнику.Надо закрыть через VBA Excel ,без сохранения и без
выскакивания запросов на…

Закрыть документ Word
Доброго дня, помогите закрыть открытый документ Word, ниже код, который его создает:
For i = 1 To…

Не могу закрыть документ WORD
Всем привет !
Помогите разобраться, не могу закрыть документ и отключится от процессора MSWORD….

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

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

Понравилась статья? Поделить с друзьями:
  • Word application для delphi
  • Word application вставить текст
  • Word application visual studio
  • Word application visible true
  • Word apple in french