Vba word закрыть приложение

Создание нового экземпляра приложения 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

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]

Содержание

  1. Document.Close method (Word)
  2. Syntax
  3. Parameters
  4. Example
  5. See also
  6. Support and feedback
  7. Метод Application.Quit (Word)
  8. Синтаксис
  9. Параметры
  10. Пример
  11. См. также
  12. Поддержка и обратная связь
  13. Application.Quit method (Word)
  14. Syntax
  15. Parameters
  16. Example
  17. See also
  18. Support and feedback
  19. Метод Document.Close (Word)
  20. Синтаксис
  21. Параметры
  22. Пример
  23. См. также
  24. Поддержка и обратная связь
  25. VBA Excel. Управление приложением Word
  26. Создание объекта Word.Application
  27. Раннее связывание приложения Word

Document.Close method (Word)

Closes the specified document.

Syntax

expression.Close (SaveChanges, OriginalFormat, RouteDocument)

expression Required. A variable that represents a Document object.

Parameters

Name Required/Optional Data type Description
SaveChanges Optional Variant Specifies the save action for the document. Can be one of the following WdSaveOptions constants: wdDoNotSaveChanges, wdPromptToSaveChanges, or wdSaveChanges.
OriginalFormat Optional Variant Specifies the save format for the document. Can be one of the following WdOriginalFormat constants: wdOriginalDocumentFormat, wdPromptUser, or wdWordDocument.
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 prompts the user to save the active document before closing it. If the user clicks Cancel, error 4198 (command failed) is trapped and a message is displayed.

See also

Support and feedback

Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.

Источник

Метод Application.Quit (Word)

Завершает работу с Microsoft Word и при необходимости сохраняет или маршрутизирует открытые документы.

Синтаксис

expression. Выход (SaveChanges, OriginalFormat, RouteDocument)

выражение (обязательно). Переменная, представляющая объект Application .

Параметры

Имя Обязательный или необязательный Тип данных Описание
Savechanges Необязательный Variant Указывает, сохраняет ли Word измененные документы перед закрытием. Может быть одной из констант WdSaveOptions .
OriginalFormat Необязательный Variant Указывает способ, которым Word сохраняет документы, исходный формат которых не был форматом документа Word. Может быть одной из констант WdOriginalFormat .
RouteDocument Необязательный Variant Значение true для маршрутизации документа следующему получателю. Если документ не имеет прикрепленного скольжения маршрутизации, этот аргумент игнорируется.

Пример

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

В этом примере пользователю предлагается сохранить все документы. Если пользователь нажимает кнопку Да, все документы сохраняются в формате Word до закрытия Word.

См. также

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Источник

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.

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.

See also

Support and feedback

Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.

Источник

Метод Document.Close (Word)

Закрывает указанный документ.

Синтаксис

expression. Close (SaveChanges, OriginalFormat, RouteDocument)

выражение (обязательно). Переменная, представляющая объект Document .

Параметры

Имя Обязательный или необязательный Тип данных Описание
Savechanges Необязательный Variant Указывает действие сохранения для документа. Может быть одной из следующих констант WdSaveOptions : wdDoNotSaveChanges, wdPromptToSaveChanges или wdSaveChanges.
OriginalFormat Необязательный Variant Задает формат сохранения документа. Может быть одной из следующих констант WdOriginalFormat : wdOriginalDocumentFormat, wdPromptUser или wdWordDocument.
RouteDocument Необязательный Variant Значение true для маршрутизации документа следующему получателю. Если документ не имеет прикрепленного скольжения маршрутизации, этот аргумент игнорируется.

Пример

В этом примере пользователю предлагается сохранить активный документ перед закрытием. Если пользователь нажимает кнопку Отмена, возникает ошибка 4198 (сбой команды) и отображается сообщение.

См. также

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Источник

VBA Excel. Управление приложением Word

Создание нового экземпляра приложения 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.Application необходимо подключить в редакторе VBA Excel ссылку на библиотеку Microsoft Word Object Library, если она не подключена. Подключается ссылка в окне «References VBAproject», перейти в которое можно через главное меню редактора: Tools–>References…

Раннее связывание позволяет при написании кода использовать лист подсказок для выбора и вставки свойств и методов привязанных объектов (Auto List Members). Если проект VBA Excel создается на заказ, то, после его завершения, раннее связывание следует заменить на позднее, так как на компьютере пользователя может не оказаться нужной библиотеки, и код работать не будет.

Источник

I’m trying in the beginning of my macro to close all word application if it’s open, although I don’t no which documents are open, and I can’t set them as an object.
Thanks.

Community's user avatar

asked Dec 12, 2016 at 12:11

Tzvibe's user avatar

1

This will close all running Word documents.

You need On Error Resume Next to prevent errors if no Word application instance is running.

Option Explicit

Sub CloseWordDocuments()

    Dim objWord As Object
    
    Do
        On Error Resume Next
        Set objWord = GetObject(, "Word.Application")
        On Error Go To 0
        If Not objWord Is Nothing Then
            objWord.Quit
            Set objWord = Nothing
        End If
    Loop Until objWord Is Nothing

End Sub

Edit

Correction below because the loop above has a flaw i.e. it will exit after the first instance of Word is closed …

Option Explicit

Sub CloseWordDocuments()

    Dim objWord As Object
    Dim blnHaveWorkObj As Boolean

    ' assume a Word object is there to be quit
    blnHaveWorkObj = True
    
    ' loop until no Word object available
    Do
        On Error Resume Next
        Set objWord = GetObject(, "Word.Application")
        If objWord Is Nothing Then
            ' quit loop
            blnHaveWorkObj = False
        Else
            ' quit Word
            objWord.Quit
            ' clean up
            Set objWord = Nothing
        End If
    Loop Until Not blnHaveWorkObj

End Sub

answered Dec 12, 2016 at 12:22

Robin Mackenzie's user avatar

Robin MackenzieRobin Mackenzie

18.1k7 gold badges41 silver badges54 bronze badges

1

Try the code below, it will close Word Application (without saving).

Option Explicit

Sub CloseWordWindows()

Dim objWord As Object

On Error Resume Next
Set objWord = GetObject(, "Word.Application")

' if no active Word is running >> exit Sub
If objWord Is Nothing Then
    Exit Sub
End If

objWord.Quit
Set objWord = Nothing

End Sub

answered Dec 12, 2016 at 12:18

Shai Rado's user avatar

Shai RadoShai Rado

32.9k6 gold badges26 silver badges51 bronze badges

3

Another option is to use Shell to accesss the elegance of powershell

Sub Comesfast()
X = Shell("powershell.exe kill -processname winword", 1)
End Sub

answered Mar 28, 2017 at 6:58

brettdj's user avatar

brettdjbrettdj

54.6k16 gold badges113 silver badges176 bronze badges

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

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

Есть статичный документ.
Требуется макрос, закрывающий Word (целиком, а не только документ), после его визуального отображения на экране.
Соответственно макрос должен работать, как я понимаю, на уровне документа (ThisDocument).

Сценарий работы в моем видении:
1. Открытие Word-документа.
2. Когда документ отображается на экране (доступен для чтения), отрабатывает макрос на закрытие этого файла.
3. Закрывается документ.
4. Закрывается Word.

Я использовал данный код на уровне документа:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub CloseAll() 
     'Close all open files and shutdown Word
     
    With Application 
        .ScreenUpdating = False 
         
         'Loop Through open documents
        Do Until .Documents.Count = 0 
             'Close no save
            .Documents(1).Close SaveChanges:=wdDoNotSaveChanges 
        Loop 
         
         'Quit Word no save
        .Quit SaveChanges:=wdDoNotSaveChanges 
    End With 
End Sub

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

Как я себе представляю два решения:
1. Средствами VBA можно определить, когда документ не только открыт, но и отображен на экране.
2. Встроить в документ, скажем, красный квадрат. Средствами VBSVBA отлавливать изменения цвета пикселя в центре экрана, если ловится красный цвет — закрывать Word.

Заранее благодарю за помощь!

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

P.S.
Задача бредовая, но…

Различные инструменты, предлагаемые после этого Microsoft Офис позволяют не только создавать документы, но и создавать функции. Конечно, это для программистов, знакомых с приложениями Visual Basic VBA. Но мы упростим вам задачу и в этой статье мы научитесь закрывать Word из кода или скрипта VBA — легко и быстро.

Но сначала мы раскроем вопрос о том, что такое Приложения Visual Basic и это не более чем приложение, интегрированное в пакет Microsoft Office.

Это позволяет программировать на листах любого документа, будь то Word, Excel, PowerPoint, Access, и поскольку он не может быть скомпилирован, он становится макросом и распространяется путем простого копирования документа.

Хотя это действие широко используется программистами, оно не мешает никому из смертных научиться создавать функции с использованием сценариев VBA. И мы возьмем задачу научить его быстро и легко. Поскольку некоторые термины могут показаться запутанными и несколько пугающими, например, при попытке преобразовать документ OpenOffice в Word .

Одно из основных его применений — автоматизация повторяющихся или часто используемых задач, таких как открытие или закрытие документа, созданного в Word .

Вот шаги, которые необходимо выполнить, чтобы закрыть Word из кода VBA или скрипт . И для начала мы заходим в приложение с рабочего стола или где бы мы его не сохранили.

Следующий шаг важен, потому что вы должны иметь Вкладка разработчика в главном меню, если эта вкладка или вкладка не отображается, необходимо выполнить следующие операции. Наведите указатель мыши на значок Microsoft Office и щелкните. Это действие вызовет окно с различными параметрами, и вам нужно перейти в его нижнюю часть и выбрать Параметры Word.

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

Вы найдете опцию Показать вкладку разработчика в Рубана и когда вы найдете его, вам нужно установить флажок слева, чтобы выбрать его.

Шаги по закрытию Word из кода или сценария VBA — быстро и легко

Когда на ленте появится вкладка Разработчик, вы можете продолжить выполнение инструкций, которые позволят вам закрыть Слово к из кода или сценария VBA.

Следующим шагом является доступ к главному меню и выбор Вкладка разработчика . Затем в разделе «Код», который находится слева, вы выбираете опцию Visual Basic.

Следующим шагом будет написание или вставка следующего кода в конец строки Set objWord = CreateObject («Word.Application») Set objDoc = objWord.Documents.Close («c: scripts test.doc ‘) objWord Следующим шагом будет перейти в левый верхний угол и щелкнуть значок Microsoft Office

Затем вам нужно выбрать опцию Сохранить, и вы сделаете это со следующим именем тест.doc это с кодом VBA который вы будете использовать, чтобы закрыть приложение Word.

Вы можете увидеть, насколько быстро и легко выполнять задачи программиста. И используйте язык программирования Basic, который имеет большое сходство с другим офисным программным обеспечением, таким как OpenOffice и StarBasic.

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

Ezoic

Like this post? Please share to your friends:
  • Vba word selection paste
  • Vba word закрыть все документы
  • Vba word selection in table
  • Vba word закладка это
  • Vba word selection find if not found