Макрос word слияние документов

Skip to content

На чтение 5 мин. Просмотров 3.3k.

Что делает макрос: Одним из наиболее востребованных форм интеграции Word с почтой — это слияние. В большинстве случаев рассылки писем относятся к процессу создания одного письма или
документа, а затем его сочетание с отдельным документом, содержащим их имена и адреса.
Например, предположим, что у вас есть список клиентов, и вы хотите, составить письмо с каждым клиентом. При помощи слияния, вы можете написать письмо один раз, а затем запустить функцию слияния в Word, чтобы автоматически создалось письмо для каждого клиента, прикрепляя соответствующий адрес, имя и другую информацию для каждой буквы. Для автоматизации, вы можете использовать макрос для имитации функции почтового слияния из
Excel.

Содержание

  1. Как макрос работает
  2. Код макроса
  3. Как этот код работает
  4. Как использовать

Как макрос работает

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

Код макроса

Sub SliyanieSWord()
'Шаг 1: Объявляем переменные
Dim wd As Word.Application
Dim wdDoc As Word.Document
Dim MyRange As Excel.Range
Dim MyCell As Excel.Range
Dim txtAddress As String
Dim txtCity As String
Dim txtState As String
Dim txtPostalCode As String
Dim txtFname As String
Dim txtFullname As String

'Шаг 2: Запустите Word и добавьте новый документ
Set wd = New Word.Application
Set wdDoc = wd.Documents.Add
wd.Visible = True

'Шаг 3: Установите диапазон вашего списка контактов
Set MyRange = Sheets("Список контактов").Range("A5:A24")

'Шаг 4: Начните цикл через каждую ячейку
For Each MyCell In MyRange.Cells

'Шаг 5: Присвойте значения каждому компоненту буквы
txtAddress = MyCell.Value
txtCity = MyCell.Offset(, 1).Value
txtState = MyCell.Offset(, 2).Value
txtPostalCode = MyCell.Offset(, 3).Value
txtFname = MyCell.Offset(, 5).Value
txtFullname = MyCell.Offset(, 6).Value

'Шаг 6: Вставьте структуру шаблона документа
wd.Selection.InsertFile _
ThisWorkbook.Path & "" & "MailMerge.docx"

'Шаг 7: Заполните каждую соответствующую закладку с соответствующим 'значением
wd.Selection.Goto What:=wdGoToBookmark, Name:="Покупатель"
wd.Selection.TypeText Text:=txtFullname
wd.Selection.Goto What:=wdGoToBookmark, Name:="Адрес"
wd.Selection.TypeText Text:=txtAddress
wd.Selection.Goto What:=wdGoToBookmark, Name:="Город"
wd.Selection.TypeText Text:=txtCity
wd.Selection.Goto What:=wdGoToBookmark, Name:="Регион"
wd.Selection.TypeText Text:=txtState
wd.Selection.Goto What:=wdGoToBookmark, Name:="Индекс"
wd.Selection.TypeText Text:=txtPostalCode
wd.Selection.Goto What:=wdGoToBookmark, Name:="Имя"
wd.Selection.TypeText Text:=txtFname

'Шаг 8: Очистить все оставшиеся закладки
On Error Resume Next
wdDoc.Bookmarks("Адрес").Delete
wdDoc.Bookmarks("Покупатель").Delete
wdDoc.Bookmarks("Город").Delete
wdDoc.Bookmarks("Регион").Delete
wdDoc.Bookmarks("Имя").Delete
wdDoc.Bookmarks("Индекс").Delete

'Шаг 9: Перейти до конца, вставить новую страницу и начать со следующей 'ячейки
wd.Selection.EndKey Unit:=wdStory
wd.Selection.InsertBreak Type:=wdPageBreak
Next MyCell

'Шаг 10: Установить курсор на начало и очистить память
wd.Selection.HomeKey Unit:=wdStory
wd.Activate
Set wd = Nothing
Set wdDoc = Nothing

End Sub

Как этот код работает

  1. Шаг 1 объявляет четыре переменные:
    • wd переменная объекта, которая выставляет объект Word Application,
    • wdDoc является переменной объекта, которая выставляет объект Word Document,
    • MyRange содержит диапазон, определяющий список контактов,
    • MyCell используется для передачи значений ячеек в строковые переменные.
    • Мы также объявляем шесть строковых переменных. Каждый из них имеет компонент — часть информации для каждого контакта в списке контактов.
  2. Этот шаг открывает Word с пустым документом. Обратите внимание, что мы устанавливаем свойство Visible приложения Word, значение True.
  3. Шаг 3 определяет каждый контакт в списке контактов. Обратите внимание, что этот диапазон выбирает только первый столбец в таблице контактов. Это происходит потому, что каждая ячейка в диапазоне должна быть передана в индивидуальном порядке к строковым переменным. Выбор только первого столбца дает нам одну ячейку в строке. С этой одной ячейке, мы можем легко настроить курсор вправо или влево, чтобы захватить ячейки вокруг него.
  4. Этот шаг запускает цикл по каждому контакту, как это определено в установленном диапазоне на шаге 3.
  5. Шаг 5 использует метод Offset в Excel, чтобы захватить значение каждого поля в конкретной строке. Начнем с диапазона, определенного на шаге 3 (первый столбец в списке
    контактов). Затем мы используем Offset для перемещения курсора на определенное число столбцов вправо, чтобы захватить данные в каждом соответствующем поле. Как просмотрено каждое поле, мы относим их значения соответствующей переменной строки.
  6. На шаге 6 мы вводим существующий шаблон в пустой документ в Word. Это равносильно копированию структуры нашего шаблона и вставки его в пустой документ.
  7. Шаг 7 присваивает значение каждой переменной строки в соответствующей закладке. Как видите в коде, этот шаг выбирает закладку по имени, а затем изменяет текст на значение назначенной переменной строки.
  8. Цель в шаге 8 удалить любые беспризорные закладки. Если какие-либо закладки задерживаются, мы получаем дубликаты закладок процедура перебирает каждую ячейку.
  9. На данный момент в коде, мы создали документ для одного контакта в нашем списке контактов. Идея состоит в том, чтобы создать новый пустой документ, чтобы мы могли выполнить ту же процедуру для следующего контакта. Вставка разрыва страницы эффективно создает новый пустой документ. Затем возвращаемся обратно к шагу 5, где мы собираем контактную информацию для следующей строки в списке. Затем на шаге 6, вставьте чистый шаблон (в комплекте с закладками) в новую страницу. И, наконец, мы присваиваем значения в закладки и очищаем. For … Next цикл гарантирует, что этот цикл повторится для каждой строки в списке контактов.
  10. Шаг 10 очищает память

Как использовать

Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:

  1. Активируйте редактор Visual Basic, нажав ALT + F11.
  2. Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
  3. Выберите Insert➜Module.
  4. Введите или вставьте код.

Добавил:

Upload

Опубликованный материал нарушает ваши авторские права? Сообщите нам.

Вуз:

Предмет:

Файл:

02.MS_Word.Макросы,слияние.docx

Скачиваний:

13

Добавлен:

12.05.2015

Размер:

57.08 Кб

Скачать

11

  1. ПРАКТИЧЕСКОЕ ЗАНЯТИЕ №2

Создание макросов.
Слияние
документов

Цель
работы:

Изучить:

  • Создание макросов

  • Создание слияния
    в документе Word

Теоретическая
часть

Макросы

Иногда одни и те
же последовательности действий приходится
выполнять достаточно часто. Такие
операции можно автоматизировать с
помощью макрокоманд (макросов).

Макрос – это
последовательность команд Word,
записанная на языке программирования
Visual
Basic.

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

Самый простой
способ создания макроса – запись
последовательности действий пользователя.

Для этого выполняют
следующие действия:

  1. Панель инструментов
    Вид / Макросы
    / Макросы / Запись макроса
    .
    На экране появится диалоговое окно.

  2. Вводится имя
    макроса, в поле Макрос
    доступен для:

    выбирается <имя рабочего файла>.
    Можно назначить макросу кнопку на
    панели инструментов.

  3. Нажать кнопку ОК.

  4. Указатель мыши
    изменяет вид (кассета), на экране
    появилась панель с двумя кнопками:
    Остановить
    запись
    и
    Пауза.
    Теперь все действия будут запоминаться
    в макрос. Для перерыва во время записи
    макроса нажать кнопку Пауза.
    При записи макроса мышь нельзя
    использовать для выделения, копирования,
    вставки и перетаскивания элементов в
    окне документа. Для записи этих действий
    следует использовать клавиатуру.

  5. Нажать кнопку Вид
    / Макросы

    / Макросы / Остановить запись
    .
    Создание макроса закончено.

Созданный макрос
можно отредактировать уже в виде
программы выбрав меню Вид
/ Макросы

/ Макросы / Изменить
.

6. Для выполнения
макроса: Вид
/ Макросы

/ Макросы /
выбрать
название своего макроса / Выполнить.
(если макрос не назначен ни клавишам,
ни кнопке).

Слияние

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

Принцип слияния
прост: вы готовите два документа, основной
документ

содержит общую для всех документов
часть, источник
данных

содержит список различий. В качестве
источника
данных
(это
второй документ) может служить не только
документ Word,
но и база данных или электронная таблица.

Порядок работы:

  1. Сначала нужно
    создать источник данных. Можно составить
    новый список: Рассылки / Начать слияние
    / Выбрать получателей /Ввести новый
    список
    . Для задания необходимых полей
    воспользоваться кнопкойНастройка
    столбцов.
    Далее необходимо заполнить
    поля данными. Для ввода новой строки
    использовать кнопкуСоздать запись.
    Источник данных сохраняется в отдельном
    документе и может быть использован для
    слияния с различными основными
    документами..

Можно воспользоваться
уже созданным источником:Рассылки /
Начать слияние / Выбрать получателей
/
:Использовать существующий список.

  1. Далее удобно
    воспользоваться мастером слияния:
    Рассылки
    /Начать слияние/Начать
    слияние
    /Пошаговый мастер слияния.

Этап 1. Выбор типа
документа (письмо, конверты, наклейки
и т.д.)

Этап 2. Выбор
получателей (можно воспользоваться
кнопкой Выбор
списка
для
открытия файла с данными и Изменить
список
для
редактирования полей).

Этап 3. Создание
документа с текстом. В
текст вставляются поля с помощью:
Рассылки /
Составление документа и вставка полей
/ Вставить поле слияния
.

Этап 4. Просмотр
писем. Кнопками
›› и ‹‹
просмотреть
значения полей.

Этап 5. Завершение
слияния. Можно нажать кнопку
Слияние в новый документ
,
при этом на каждой новой странице будет
создан документ, вместо полей в нем
будут вставлены данные из источника
данных.

Варианты заданий

Варианты заданий
для выполнения работы приведены в
таблицах 1 и 2.

Таблица 1

Варианты заданий для создания макросов

Номер
варианта

Задания для
выполнения

1

Создайте
макрос, выводящий текст:

Работу
выполнил: Иванов А.С., ст.гр. Эб-112

Работу
проверил: Кисин И.Л., к.т.н.

2

Создайте
макрос, создающий маркированный
список:

  • Ориентация
    студента на выполнение дипломного
    проекта.

  • Закрепление
    теоретических знаний, полученных при
    изучении базовых дисциплин специальности.

3

Создайте
макрос, изменяющий шрифт выделенного
фрагментатекста:

Исходный
текст:

Студентам,
уже работающим на предприятии, основное
внимание следует уделить постановке
задачи для дипломного проектирования,
выбору объекта автоматизации.

Полученный
текст:

Студентам,
уже работающим на предприятии, основное
внимание следует уделить постановке
задачи для дипломного проектирования,
выбору объекта автоматизации.

4

Создайте
макрос, изменяющий выравнивание
выделенного фрагмента текста:

Исходный
текст:

Ориентация
студента на выполнение дипломного
проекта. Технологическая практика
должна рассматриваться как подготовка
к дипломному проектированию.

Полученный
текст:

Ориентация
студента на выполнение дипломного
проекта. Технологическая практика
должна рассматриваться как подготовка
к дипломному проектированию.

5

Создайте
макрос, создающий нумерованный список:

  1. Ориентация
    студента на выполнение дипломного
    проекта.

  2. Закрепление
    теоретических знаний, полученных при
    изучении базовых дисциплин специальности.

6

Создайте
макрос, изменяющий размер шрифта
выделенного фрагмента текста:

Исходный
текст:

Ориентация
студента на выполнение дипломного
проекта. Технологическая практика
должна рассматриваться как подготовка
к дипломному проектированию.

Полученный
текст:

Ориентация
студента на выполнение дипломного
проекта. Технологическая практика
должна рассматриваться как подготовка
к дипломному проектированию.

7

Создайте
макрос, изменяющий междустрочный
интервал выделенного фрагмента текста:

Исходный
текст:

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

Полученный
текст:

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

Таблица 2

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #

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

Всем привет!

всю историю описывать не буду…
но на текущем этапе у меня есть файл в экселе (ДБ) к нему методом слияния подключено 3 файла word (Договор, Акт, Накладная). Есть макрос в word, который выполняет слияние и сохраняет документы (слитые) в необходимую папку под необходимым именем. За раз обрабатывается одна запись слияния — так и задумано.

Получается процедура щас такая. Заполняем данные в строке excel, далее открываем три файла ворд и оттуда запускаем макрос (3 раза соответственно). Я хочу объединить эти три (исходные) документа в 1, и чтобы мой макрос ещё и его резал документ на три заданные части и сохранял в 3 документа под теми же адресамиименами что и сейчас.

Меняться в этом «общем» доке будут только данные полей слияния, т.е. кол-во листов, форматирование и т.д. остаётся неизменным.

Проблема с нарезкой файла (резать разделами и использовать Sections.Count — не вариант), т.к. разделов больше чем документов для уникального форматирования колонтитулов.

В настоящий момент код выглядит так:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
Sub m_1()
Dim fs
Dim Fol_name As String
Dim File_name As String
Dim oMD As Document
Const Outgoing As String = "doctype"
  If ActiveDocument.MailMerge.MainDocumentType <> wdNotAMergeDocument Then
    Set oMD = ActiveDocument
  Else
    MsgBox "Активный документ должен быть создан слиянием.", vbExclamation, "Сохранение документов после слияния"
    Exit Sub
  End If
  If Not oMD.Bookmarks.Exists(Outgoing) Then
    MsgBox "В документе нет закладки с именем " & Outgoing & ", которая используется в качестве имени файла." & vbNewLine & _
          "Создайте закладку с таким именем и запустите макрос ещё раз", vbExclamation, "Сохранение документов после слияния"
    Exit Sub
  End If
 
Fol_name = "C:test" & ActiveDocument.MailMerge.DataSource.DataFields("contract")
File_name = "C:test" & ActiveDocument.MailMerge.DataSource.DataFields("contract") & "" & _
         oMD.Bookmarks(Outgoing).Range.Text & "_" & ActiveDocument.MailMerge.DataSource.DataFields("contract") & ".doc"
 
'Проверка на наличие уже такой папки
    Set fs = CreateObject("Scripting.FileSystemObject")
    If fs.folderexists(Fol_name) = False Then
        'Создание папки
            fs.createfolder (Fol_name)
    End If
'Проверка на наличие в нашей папке уже такого файла
    If fs.fileexists(File_name) Then
        MsgBox "Файл с таким именем уже есть в этой папке. Файл не будет сохранён, т.к. он заменит собой уже существующий файл", vbCritical
        Exit Sub
    End If
    
'Сохранение файла
    
    With oMD.MailMerge
      .Destination = wdSendToNewDocument
      .SuppressBlankLines = True
      .Execute False
      With Documents(1)
        .SaveAs FileName:=File_name
        .Close False
      End With
    End With
    
End Sub

Для имени файла используется одно из значений полей слияния — DataSource.DataFields(«contract») — номер договора (оно же и для названия папки), и закладка doctype, выделяющая кусок текста «Договор», «Акт», «Накладная» в соответствующих документах.
Если резать 1 документ на 3, то закладка уже не прокатит, но эти слова можно и вручную прописать в коде.

Помогите пожалуйста, люди добрые. Уж очень хочется, чтоб всё было немного лучше чем есть)

 

Luna2903

Пользователь

Сообщений: 44
Регистрация: 17.11.2018

Добрый день!  Создала в Word документ («Заявление.doc) c использованием данных из таблицы Excel  в режиме слияния. Следующий шаг — макросом каждый полученный документ сохранила в отдельном файле. Все работает, если в режиме слияния обрабатываются ВСЕ строки таблицы — на каждого человека, указанного в таблице с исходными данными формируется «именное» заявление (это сделано для уменьшения объема работы пользователям и снижения кол-ва ошибок).
Вопрос знатокам- как установить в макросе фильтр, чтобы в цикле проходить только записи, отмеченные V (режим «изменить список получателей»)?  

 

БМВ

Модератор

Сообщений: 21385
Регистрация: 28.12.2016

Excel 2013, 2016

#2

27.04.2020 14:08:13

Цитата
Luna2903 написал:
Вопрос знатокам- как установить в макросе фильтр, чтобы в цикле проходить только записи, отмеченные V (режим «изменить список получателей»)?  

а может сделать фильтр встроенными средствами слияния?

По вопросам из тем форума, личку не читаю.

 

Luna2903

Пользователь

Сообщений: 44
Регистрация: 17.11.2018

Да, встроенными получается. В результате все сформированные документы  формируются в один файл, а мне хотелось бы сформировать «именные» файлы. Если запускаю макрос,  то этот фильтр  не виден.

Макрос, который получился — ниже.

Изменено: Luna290327.04.2020 14:23:06

 

Luna2903

Пользователь

Сообщений: 44
Регистрация: 17.11.2018

#4

27.04.2020 14:17:34

Код
Sub delenie_na_fio()

    Dim imf_save As String
    Dim pole_otd As Integer
    Dim put_fl As String
               
put_fl = "D:WorkЗаявления"
                n = 0
                
On Error Resume Next
  ActiveDocument.MailMerge.DataSource.ActiveRecord = wdFirstRecord
  Do
    With ActiveDocument.MailMerge
        .Destination = wdSendToNewDocument
        .SuppressBlankLines = True
        With .DataSource
            .FirstRecord = ActiveDocument.MailMerge.DataSource.ActiveRecord
            .LastRecord = ActiveDocument.MailMerge.DataSource.ActiveRecord
        
        pole_fam = ActiveDocument.MailMerge.DataSource.DataFields(2).Value
        pole_otd = ActiveDocument.MailMerge.DataSource.DataFields(3).Value
        pole = pole_otd & " " & pole_fam

        Application.StatusBar = pole
            imf_save = put_fl & pole & " заявление.doc"

        End With
        .Execute Pause:=False
    
    End With
    
    ActiveDocument.SaveAs FileName:= _
        imf_save, FileFormat:= _
        wdFormatDocument, LockComments:=False, Password:="", AddToRecentFiles:= _
        True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
        False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
        SaveAsAOCELetter:=False
    ActiveDocument.Close
    ActiveDocument.MailMerge.DataSource.ActiveRecord = wdNextRecord

                n = n + 1
       Loop Until n = ActiveDocument.MailMerge.DataSource.RecordCount

End Sub

Изменено: Luna290327.04.2020 14:49:04

 

Wild.Godlike

Пользователь

Сообщений: 616
Регистрация: 23.05.2018

#5

27.04.2020 14:19:35

Luna2903, Сегодня прям фестиваль :)

Код
Sub МакросОтветаНаВопрос()
With CreateObject("WScript.Shell")
 .Run "https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=1&TID=45586&TITLE_SEO=45586-pravila-foruma"
End With
End Sub
 

Luna2903

Пользователь

Сообщений: 44
Регистрация: 17.11.2018

Объясните, пожалуйста, что я не так сформулировала/написала. Какие правила форума нарушила?

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

Luna2903, оформите код, как это делают другие.

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

А название темы не нужно уточнить? Предложите новое, модераторы заменят

 

Luna2903

Пользователь

Сообщений: 44
Регистрация: 17.11.2018

Тему обозначила, как я ее вижу. Если Вы считаете по-другому, подскажите. Сама изменить формулировку затрудняюсь.

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

#10

28.04.2020 14:33:10

Цитата
Luna2903 написал:
изменить формулировку затрудняюсь.

Вы не знаете, в чём заключается Ваша задача?

 

Luna2903

Пользователь

Сообщений: 44
Регистрация: 17.11.2018

Мне кажется, что я описАла задачу и проблему с которой встретилась достаточно подробно. И не понимаю, что я должна переформулировать.
У каждого свое видение. Подскажите  как, на Ваш взгляд, будет правильно.  

Изменено: Luna290328.04.2020 14:51:04

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

Чисто для примера,: «Как при слиянии в Word  исключить строки с нулевыми значениями
Из такого названия понятна задача? А из Вашего?
P.S. Просто предложите адекватное название и не пытайтесь втянуть меня в бесполезную переписку.

 

БМВ

Модератор

Сообщений: 21385
Регистрация: 28.12.2016

Excel 2013, 2016

#13

28.04.2020 16:08:02

Luna2903,
1. Судя по тому что вы хотите на выходе, раз  вам нужен именной файл, слияние то вам скорее вредит, и управлять им только сложнее. закладки в помощь и все получится
2. Что вам надо , то кратко и укажите для темы.

По вопросам из тем форума, личку не читаю.

WORD Макросы для сохранения слияния и рассылки в отдельные файлы формата DOC или PDF


This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters

Show hidden characters

Sub ToTranslitDoc()
Dim i As Long
Dim oMerge As MailMerge
Dim oData As MailMergeDataSource
Set oMerge = ActiveDocument.MailMerge
Set oData = oMerge.DataSource
Application.ScreenUpdating = False
For i = 1 To oData.RecordCount
With oData
.FirstRecord = i
.LastRecord = i
.ActiveRecord = i
End With
With oMerge
.Destination = wdSendToNewDocument
.Execute Pause:=False
End With
With ActiveDocument
.SaveAs («d:TMP» & oData.DataFields(«Translit»).Value & «.doc»)
.Close
End With
Next i
Set oData = Nothing
Set oMerge = Nothing
Application.ScreenUpdating = True
End Sub
Sub ToTranslitPdf()
Dim i As Long
Dim oMerge As MailMerge
Dim oData As MailMergeDataSource
Set oMerge = ActiveDocument.MailMerge
Set oData = oMerge.DataSource
Application.ScreenUpdating = False
For i = 1 To oData.RecordCount
With oData
.FirstRecord = i
.LastRecord = i
.ActiveRecord = i
End With
With oMerge
.Destination = wdSendToNewDocument
.Execute Pause:=False
End With
With ActiveDocument
.SaveAs FileName:=«d:TMP» & oData.DataFields(«Translit»).Value & «.pdf», FileFormat:=wdFormatPDF
.Close (False)
End With
Next i
Set oData = Nothing
Set oMerge = Nothing
Application.ScreenUpdating = True
End Sub

Понравилась статья? Поделить с друзьями:
  • Макрос excel ячейка ввода
  • Макрос word при открытии файла
  • Макрос excel это просто
  • Макрос word заполнение формы
  • Макрос excel эта строка этот столбец