Word macro create new document

Создание нового документа 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.

  • Документы Word
  • Создание файлов
  • Работа с файлами

Таблица Excel с исходными данными для создания документов Word

Макрос предназначен для программного создания документов Word на основе шаблона

(без использования функции слияния в Word)

В прикреплённом к статье архиве находятся 2 файла:

  • шаблон договора в формате Microsoft Word (расширение .dot)
  • файл Excel с макросом

Настройки макроса задаются в коде:

Const ИмяФайлаШаблона = «шаблон.dot»
Const КоличествоОбрабатываемыхСтолбцов = 8
Const РасширениеСоздаваемыхФайлов = «.doc»

При нажатии кнопки запуска макрос на основе шаблона dot создаёт очередной файл, и в этом документе производит замену текста («кода поля») из первой строки файла Excel на значение поля (из очередной строки с данными файла Excel)

Папка для сформированных документов создаётся автоматически, и содержит в имени текущую дату и время
(например, созданная папка будет называться Договоры, сформированные 01-05-2011 в 15-03-24)

Имена создаваемых файлов формируются объединением полей фамилия, имя и отчество, с добавлением расширения doc

PS: Макрос был написан достаточно давно, когда я только начинал изучать VBA, — так что код недостаточно универсален.

Но, в качестве примера, пожалуй, подойдёт (если вам нужен более функциональный макрос, воспользуйтесь универсальной надстройкой (см. ниже))

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

В надстройке — много возможностей, и полезных дополнений: склонение ФИО в родительный и дательный падежи, автоматический вывод на печать (с заданным количеством копий), размещение созданных файлов в разных папках, создание и рассылка писем со вложениями, и множество других полезных функций.

По вышеприведённой ссылке программа заполнения документов Word из Excel доступна для бесплатного скачивания.

Внимание: просьбы о доработке макроса, описанного в этой статье, не принимаются.

Есть новая (универсальная) версия, — в которой уже есть практически всё, что может понадобиться.

  • 197059 просмотров

Не получается применить макрос? Не удаётся изменить код под свои нужды?

Оформите заказ у нас на сайте, не забыв прикрепить примеры файлов, и описать, что и как должно работать.

Please Note:
This article is written for users of the following Microsoft Word versions: 2007, 2010, 2013, 2016, 2019, and Word in Microsoft 365. If you are using an earlier version (Word 2003 or earlier), this tip may not work for you. For a version of this tip written specifically for earlier versions of Word, click here: Creating a New Document in VBA.

Written by Allen Wyatt (last updated March 21, 2020)
This tip applies to Word 2007, 2010, 2013, 2016, 2019, and Word in Microsoft 365


One of the common things done during a macro is to create a new document. For instance, your macro could need the new document to hold processed text, or a different version of the document on which you are working.

To create a new document, simply include this line in your VBA macro:

Documents.Add

This creates a new document, based on the Normal template, adds it to the Documents collection, and makes the document active. This is the same as, within Word, creating a new document. If you want to create a new document based on a different template, simply use this command:

Documents.Add("MyTemplate.dotx")

Note that name of the desired template is specified. You may also find it helpful to include the full path to the template within the quote marks.

If you would like to know how to use the macros described on this page (or on any other page on the WordTips sites), I’ve prepared a special page that includes helpful information. Click here to open that special page in a new browser tab.

WordTips is your source for cost-effective Microsoft Word training.
(Microsoft Word is the most popular word processing software in the world.)
This tip (12725) applies to Microsoft Word 2007, 2010, 2013, 2016, 2019, and Word in Microsoft 365. You can find a version of this tip for the older menu interface of Word here: Creating a New Document in VBA.

Author Bio

With more than 50 non-fiction books and numerous magazine articles to his credit, Allen Wyatt is an internationally recognized author. He is president of Sharon Parq Associates, a computer and publishing services company. Learn more about Allen…

MORE FROM ALLEN

Pulling Formulas from a Worksheet

The formulas in your worksheet can be displayed (instead of formula results) by a simple configuration change. You can …

Discover More

Determining Your Version of Excel

Want to find out exactly what version of Excel you are using? Here’s how to get to the info.

Discover More

Footnote Numbers Missing on Printout

When you add footnotes to a document, you expect the footnote reference numbers to be visible when you print the …

Discover More

More WordTips (ribbon)

Highlighting Every Other Line

Macros are very good at completing mundane, repetitive tasks. For instance, you could use the macro presented in this tip …

Discover More

Understanding the If … End If Structure

One of the powerful programming structures provided in VBA allows you to conditionally execute commands. The If … End …

Discover More

Repeating Actions

Need to repeat an action a whole bunch of times? You can do it a time or two using keyboard shortcuts, but you’ll need a …

Discover More

A macro is a shortcut to something you do a lot. It saves time on tasks you do often, but it asks for bundling the steps into a macro. So first we need to record or create the macro. Then we can run the macro by clicking a button or pressing a combination of keys. It depends on how we set it up. Now let’s see how we are going to create a simple Word 2010 macro.

Step 1: Click View in Microsoft Word 2010 menu, and click Macros > Record Macro in Quick Access Toolbar.

record macro in Word 2010

Step 2: When you click on Record Macro, you get the Record Macro dialog box popping up. It looks like below.

macro record four important settings in word 2010

There are four areas in the Record Macro dialog box, Macro name, Assign Macro to, Store Macro in and Description.

The first thing is to give your new Macro a name. Macro name is set Macro1 or Macro2 etc by default. But it is not descriptive for what we want our macro to do. So we should call our macro a specified name, which can clearly show what the macro can do. For example, if you want to create a macro to change text font in Word document, you can name it FontChange.

In the section Assign Macro to, you can give the choice either Button or Keyboard for the way to record and run macro.

Store macro in points out which Word document the macro will apply to. When you choose All Documents (Normal.dotm), the macro you are going to record will be available to all the new Word documents created in future. While you choose MS Word (document), it will be only used in this Word document.

In Description part, you are free to set anything you like. So if there is something you cannot describe macro in other parts, write them in this part.

Step 3: Click OK in Record Macro dialog to begin recording a macro.

Step 4: When you return to your Word document, you would find your mouse pointer becomes different.

Tips: If you have chosen “Button” in Step 2 “Assign Macro to” section, now click View, and point to Macros down arrow, you can see Stop Recording and Pause Recording options. The macro being recorded can be easily stopped or paused with them.

Step 5: After you have done what you want to record, click Stop Recording. Now a macro for Word 2010 document has been successfully created.

stop recording macro in word 2010

If you have made macro applied to all documents, now you can run the macro and apply it to other documents in Word 2010.

How to run Macro in Word 2010 new document?

1. Open Word document you would like to do something with Macro on document quickly.

2. Click View – Macros.

3. Macros dialog appears, and several available Macros are listed in the dialog box.

select macro in word 2010 to run

4. Select part of Word document you want macro applies to, and choose the appropriate macro in Macros dialog. Then click Run button at the top right side.

Tips: If the macro is available to all Word document, it won’t be necessary to specify any part of Word document before running macro.

At last, there is one more thing worth mentioning. If macro has applied to Word template, and you create new document with template normal.dotx, then run this new macro in new document would not be necessary.

Related Articles:

  • How to Recover Word Password
  • 2 Ways to Encrypt Word Document of Microsoft Office 2007
  • How to Enable, Create and Delete Macros in MS Excel 2007/2010

Image of Susan Harkins

on

March 17, 2011, 12:57 AM PDT

How to automatically execute a Word macro when you create, open, or close a document

By adding a macro to a template’s New, Open, and Close event procedures, you can automate a number of tasks, making you more efficient and productive.

You probably know that you can reduce the amount of time you spend formatting documents by making those format changes to your template, but did you know that you can add macros to a template? You’d do so to automate a regular task in all documents based on the template. Specifically, you can add macros to a template that run when you create a new document or open and close an existing document (based on the template).

Automate a task when creating a new document
To create a new document, you click New, press [Ctrl]+N, or choose New from the File menu/tab. You can get Word to execute a task when you create a new document using the Document_New event procedure, as follows:

  1. Open the template. You’ll find normal.dot or normal.dotm in the Documents and SettingsAdministrator/userApplication DataMicrosoftTemplates folder. You can use any template, not just normal.dot or normal.dotm.
  2. Launch the Visual Basic Editor (VBE) by pressing [Alt]+F11.
  3. In the Project Explorer, double-click ThisDocument.
  4. In the resulting module, enter the event procedure shown below.
  5. Click Save and close the VBE.
Private Sub Document_New()
  'Greet user.
  MsgBox "Greetings", vbOKOnly, "Greetings"
End Sub

When you return to Word, close the template file. Then, create a new document. Word will open a new blank document and display a simple greeting in a message box. Click OK to close the message. (The macro is simple on purpose as this technique is about the event procedure and its relationship to a template. What the macro does isn’t important to the technique.)

Automate a task when opening an existing document
You can automate a task when opening an existing document in much the same way. The only thing that changes is the event procedure. In this case, you’d use the following Document_Open event:

Private Sub Document_Open()
  'Greet user.
  MsgBox "Greetings", vbOKOnly, "Greetings"
End Sub

You can apply this macro to a template or to an existing document. If you add this macro to the template, Word will save it with every new document you create. In other words, every document you create (based on that template) will execute this macro every time you open it.

Automate a task when closing an existing document
I have one last event procedure to cover – one that automates a task when you close a document. Like the last macro, if you add the macro to a template, Word will execute the macro every time you  close any document based on the template. Use the following event procedure:

Private Sub Document_Close()
  'Greet user.
  MsgBox "Greetings", vbOKOnly, "Greetings"
End Sub

Automating a task for all documents by adding it to the template could make you more efficient!

  • Software

Понравилась статья? Поделить с друзьями:
  • Word mac os светлая тема
  • Word lists for children
  • Word mac and windows
  • Word lists for categories
  • Word ltsc что это