Vba word как закрыть документ

title keywords f1_keywords ms.prod api_name ms.assetid ms.date ms.localizationpriority

Document.Close method (Word)

vbawd10.chm158008401

vbawd10.chm158008401

word

Word.Document.Close

59603a58-17ee-bc65-597b-6200e8be9fbc

06/08/2017

medium

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.

On Error GoTo errorHandler 
ActiveDocument.Close _ 
 SaveChanges:=wdPromptToSaveChanges, _ 
 OriginalFormat:=wdPromptUser 
errorHandler: 
If Err = 4198 Then MsgBox "Document was not closed"

See also

Document Object

[!includeSupport and feedback]

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

Коллеги, добрый день.
К сожалению, не знаю 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.
Задача бредовая, но…

Использование 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"

Пример программы можно скачать здесь.

Различные инструменты, предлагаемые после этого 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

Создание нового документа Word или открытие существующего из кода VBA Excel. Методы Documents.Add и Documents.Open. Сохранение и закрытие документа.

Работа с Word из кода VBA Excel
Часть 2. Создание и открытие документов Word
[Часть 1] [Часть 2] [Часть 3] [Часть 4] [Часть 5] [Часть 6]

Новый документ Word создается из кода VBA Excel с помощью метода Documents.Add:

Sub Test1()

Dim myWord As New Word.Application

Dim myDocument As Word.Document

Set myDocument = myWord.Documents.Add

myWord.Visible = True

End Sub

Переменную myDocument можно объявить с типом Object, но тогда не будет ранней привязки к типу Word.Document и подсказок при написании кода (Auto List Members).

Открытие существующего документа

Существующий документ Word открывается из кода VBA Excel с помощью метода Documents.Open:

Sub Test2()

Dim myWord As New Word.Application

Dim myDocument As Word.Document

Set myDocument = _

myWord.Documents.Open(«C:Документ1.docx»)

myWord.Visible = True

End Sub

Замените в этой процедуре строку «C:Документ1.docx» на адрес своего файла.

Подключение к открытому документу

Присвоение переменной ссылки на существующий экземпляр Word.Application осуществляется в VBA Excel с помощью функции GetObject:

Sub Test3()

Dim myWord As Object, myDoc As Word.Document

On Error GoTo Instr

    Set myWord = GetObject(, «Word.Application»)

    Set myDoc = myWord.Documents(«Документ1.docx»)

    myDoc.Range.InsertAfter «Добавляем новый текст, подтверждающий подключение к открытому документу.»

Exit Sub

Instr:

    MsgBox «Произошла ошибка: « & Err.Description

End Sub

Если открытого приложения Word нет, выполнение функции GetObject приведет к ошибке. Также произойдет ошибка, если не будет найден указанный документ (в примере — «Документ1.docx»).

Сохранение и закрытие документа

Сохранение нового документа

Чтобы сохранить из кода VBA Excel новый документ Word, используйте метод SaveAs2 объекта Document:

myDocument.SaveAs2 («C:Документ2.docx»)

Замените «C:Документ2.docx» на путь к нужному каталогу с именем файла, под которым вы хотите сохранить новый документ.

Сохранение изменений в открытом документа

Сохраняйте изменения в существующем документе с помощью метода Document.Save или параметра SaveChanges метода Document.Close:

‘Сохранение изменений документа

myDocument.Save

‘Сохранение изменений документа

‘при закрытии

myDocument.Close ‘по умолчанию True

myDocument.Close True

myDocument.Close wdSaveChanges

‘Закрытие документа без

‘сохранения изменений

myDocument.Close False

myDocument.Close wdDoNotSaveChanges

Закрытие любого сохраненного документа

Метод Document.Close закрывает документ, но не приложение. Если работа с приложением закончена, оно закрывается с помощью метода Application.Quit.

Like this post? Please share to your friends:
  • Vba word как выделить часть текста
  • Vba word как выделить строку
  • Vba word как выделить все таблицы
  • Vba word имя файла
  • Vba word имя документа