Excel создает word документы

  • Документы 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 доступна для бесплатного скачивания.

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

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

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

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

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

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

 

khmelae

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

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

#1

13.01.2017 03:02:19

Здравствуйте!

Есть макрос Excel который создает документ Word по шаблону. Необходимо внести изменения в код макроса таким образом чтобы:
1) Шаблоны хранились в папке «ШАБЛОНЫ (нужно чтобы хранились здесь)»
2) Готовые Договора сохранялись в папку «ДОГОВОРА (нужно чтобы сохранялись сюда)»
При этому если перемещается вся папка «CreateWordDocuments», в которой хранится файл с макросом «договор» и папки «ШАБЛОНЫ (нужно чтобы хранились здесь)» , «ДОГОВОРА (нужно чтобы сохранялись сюда)», маршрут должен подстраиваться под расположение файл с макросом «договор»

Пример прилагаю.

Заранее спасибо за помощь:)

Код
Const ИмяФайлаШаблона = "шаблон.dot"
Const КоличествоОбрабатываемыхСтолбцов = 11
Const РасширениеСоздаваемыхФайлов = ".doc"
Sub СформироватьДоговоры2()
    ПутьШаблона = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, ИмяФайлаШаблона)
    НоваяПапка = NewFolderName & Application.PathSeparator
    Dim row As Range, pi As New ProgressIndicator
    r = Cells(Rows.Count, "C").End(xlUp).row: rc = r - 2
    If rc < 1 Then MsgBox "Строк для обработки не найдено", vbCritical: Exit Sub
    pi.Show "Формирование договоров": pi.ShowPercents = True: s1 = 10: s2 = 90: p = s1: a = (s2 - s1) / rc
    pi.StartNewAction , s1, "Запуск приложения Microsoft Word"
    ' Dim WA As Word.Application, WD As Word.Document: Set WA = New Word.Application    ' c подключением библиотеки Word
    Dim WA As Object, WD As Object: Set WA = CreateObject("Word.Application")    ' без подключения библиотеки Word
    For Each row In ActiveSheet.Rows("3:" & r)
        With row
            ФИО = Trim$(.Cells(3)) & " " & Trim$(.Cells(4)) & " " & Trim$(.Cells(5))
            Filename = НоваяПапка & ФИО & РасширениеСоздаваемыхФайлов
            pi.StartNewAction p, p + a / 3, "Создание нового файла на основании шаблона", ФИО
            Set WD = WA.Documents.Add(ПутьШаблона): DoEvents
            pi.StartNewAction p + a / 3, p + a * 2 / 3, "Замена данных ...", ФИО
            For i = 1 To КоличествоОбрабатываемыхСтолбцов
                FindText = Cells(1, i): ReplaceText = Trim$(.Cells(i))
                ' так почему-то заменяет не всё (не затрагивает таблицу)
                'WA.Selection.Find.Execute FindText, , , , , , , wdFindContinue, False, ReplaceText, True
                pi.line3 = "Заменяется поле " & FindText
                With WD.Range.Find
                    .Text = FindText
                    .Replacement.Text = ReplaceText
                    .Forward = True
                    .Wrap = 1
                    .Format = False: .MatchCase = False
                    .MatchWholeWord = False
                    .MatchWildcards = False
                    .MatchSoundsLike = False
                    .MatchAllWordForms = False
                    .Execute Replace:=2
                End With
                DoEvents
            Next i
            pi.StartNewAction p + a * 2 / 3, p + a, "Сохранение файла ...", ФИО, " "
            WD.SaveAs Filename: WD.Close False: DoEvents
            p = p + a
        End With
    Next row
    pi.StartNewAction s2, , "Завершение работы приложения Microsoft Word", " ", " "
    WA.Quit False: pi.Hide
    msg = "Сформировано " & rc & " договоров. Все они находятся в папке" & vbNewLine & НоваяПапка
    MsgBox msg, vbInformation, "Готово"
End Sub

Function NewFolderName() As String
    NewFolderName = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, "Договоры, сформированные " & Get_Now)
    MkDir NewFolderName
End Function
Function Get_Date() As String: Get_Date = Replace(Replace(DateValue(Now), "/", "-"), ".", "-"): End Function
Function Get_Time() As String: Get_Time = Replace(TimeValue(Now), ":", "-"): End Function
Function Get_Now() As String: Get_Now = Get_Date & " в " & Get_Time: End Function

Прикрепленные файлы

  • CreateWordDocuments.rar (63.04 КБ)

 

khmelae

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

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

#2

15.01.2017 02:58:16

Доброго всем времени суток!
После 4 часов проб и ошибок у меня получилось найти решение проблем с сохранением файла в нужное место. Все работает делюсь кодом макроса, может быть пригодится Вам.

Но возникли две новые трудности:
1) Как сделать так чтобы файл Word после сохранения открывался автоматически
тут у меня есть понимание что нужно внести коррективы в строку
WD.SaveAs Filename: WD.Close False: DoEvents
, но чтобы я не делал файл не открываются автоматически:

2) Как сохранить файл в формате PDF а не DOC
тут тоже есть догадка что нужно использовать метод ExportAsFixedFormat, но я не понимаю как его правильно применить.

Заранее спасибо за помощь:)

Код
Const ИмяФайлаШаблона = "ШАБЛОНЫ/шаблон2.dot"
Const ИмяФайлаДоговора = "ДОГОВОРА/Договоры"
Const КоличествоОбрабатываемыхСтолбцов = 11
Const РасширениеСоздаваемыхФайлов = ".doc"Sub СформироватьДоговоры()
    ПутьШаблона = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, ИмяФайлаШаблона)
    ПутьДоговора = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, ИмяФайлаДоговора)
    'НоваяПапка = NewFolderName & Application.PathSeparator
    Dim row As Range, pi As New ProgressIndicator
    r = Cells(Rows.Count, "C").End(xlUp).row: rc = r - 2
    If rc < 1 Then MsgBox "Строк для обработки не найдено", vbCritical: Exit Sub    pi.Show "Формирование договоров": pi.ShowPercents = True: s1 = 10: s2 = 90: p = s1: a = (s2 - s1) / rc
    pi.StartNewAction , s1, "Запуск приложения Microsoft Word"    ' Dim WA As Word.Application, WD As Word.Document: Set WA = New Word.Application    ' c подключением библиотеки Word
    Dim WA As Object, WD As Object: Set WA = CreateObject("Word.Application")    ' без подключения библиотеки Word    For Each row In ActiveSheet.Rows("3:" & r)
        With row
            ФИО = Trim$(.Cells(3)) & " " & Trim$(.Cells(4)) & " " & Trim$(.Cells(5) & Get_Now)
            Filename = ПутьДоговора & ФИО & РасширениеСоздаваемыхФайлов            pi.StartNewAction p, p + a / 3, "Создание нового файла на основании шаблона", ФИО
            Set WD = WA.Documents.Add(ПутьШаблона): DoEvents            pi.StartNewAction p + a / 3, p + a * 2 / 3, "Замена данных ...", ФИО
            For i = 1 To КоличествоОбрабатываемыхСтолбцов
                FindText = Cells(1, i): ReplaceText = Trim$(.Cells(i))                ' так почему-то заменяет не всё (не затрагивает таблицу)
                'WA.Selection.Find.Execute FindText, , , , , , , wdFindContinue, False, ReplaceText, True                pi.line3 = "Заменяется поле " & FindText
                With WD.Range.Find
                    .Text = FindText
                    .Replacement.Text = ReplaceText
                    .Forward = True
                    .Wrap = 1
                    .Format = False: .MatchCase = False
                    .MatchWholeWord = False
                    .MatchWildcards = False
                    .MatchSoundsLike = False
                    .MatchAllWordForms = False
                    .Execute Replace:=2
                End With
                DoEvents
            Next i
            pi.StartNewAction p + a * 2 / 3, p + a, "Сохранение файла ...", ФИО, " "
            WD.SaveAs Filename: WD.Close False: DoEvents
            'WD.PrintOut: WD.Close False: DoEvents печать без сохранения
            p = p + a
        End With
    Next row    pi.StartNewAction s2, , "Завершение работы приложения Microsoft Word", " ", " "
    WA.Quit True: pi.Hide
    msg = "Сформировано " & rc & " договоров. Все они находятся в папке" & vbNewLine & НоваяПапка
    MsgBox msg, vbInformation, "Готово"
End Sub




'Function NewFolderName() As String
   ' NewFolderName = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, ИмяФайлаДоговора & Get_Now)
   ' MkDir NewFolderName
'End FunctionFunction Get_Date() As String: Get_Date = Replace(Replace(DateValue(Now), "/", "-"), ".", "-"): End Function
Function Get_Time() As String: Get_Time = Replace(TimeValue(Now), ":", "-"): End Function
Function Get_Now() As String: Get_Now = Get_Date & " в " & Get_Time: End Function

Прикрепленные файлы

  • CreateWordDocuments_.rar (45.49 КБ)

Изменено: khmelae15.01.2017 02:59:58

 

The_Prist

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

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

Профессиональная разработка приложений для MS Office

#3

15.01.2017 10:55:22

Цитата
khmelae написал:
использовать метод ExportAsFixedFormat, но я не понимаю как его правильно применить

записать в Word сохранение файла в PDF. Будет готовый код.

Цитата
khmelae написал:
чтобы файл Word после сохранения открывался автоматически

достаточно его просто не закрывать, я думаю. В этой строке:
WD.SaveAs Filename: WD.Close False: DoEvents
просто удалите
WD.Close False:

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

khmelae

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

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

The_Prist

 спасибо за Ваш ответ. К сожалению просто удаление «WD.Close False: » не помогает сохраненные файлы не открываются автоматически. я уже попробовал разные варианты
1) WD.SaveAs Filename: WD.Open True: DoEvents   ‘сохранить и открыть
2) WD.Open Filename: DoEvents ‘открыть без сохранения
Но увы ничего не работает(((

C сохранением в PDF тоже не выходит, по Вашему совету сделал запись макроса «сохранение файла DOC в PDF». Попытался по подобию сделать, но ничего не получилось(((
1) WD.ExportAsFixedFormat OutputFilename: ExportFormat: wdExportFormat , PDFOpenAfterExport:=True
2) WD.ExportAsFixedFormat Filename: WD.Close False: DoEvents



Пока мой метод проб и ошибок не приносит результата…

 

The_Prist

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

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

Профессиональная разработка приложений для MS Office

#5

16.01.2017 10:42:38

Цитата
khmelae написал:
сохраненные файлы не открываются

Они вообще у Вас создаются? Если каждый файл не закрывать — то он останется открытым, что приведет ровно к тому же эффекту, что закрыть-открыть. Поэтому приведенное мной решение работать должно без проблем, если только у Вас не возникает где-то раньше ошибка кода. Приведите код полностью как Вы там чего изменили.

Строка сохранения в PDF у Вас не рабочая — ознакомьтесь со статьей:

Как из Excel обратиться к другому приложению

Потому что нет у Excel понятия, что такое wdExportFormat. И то ли у Вас опечатка, то ли там знака равно после двоеточия не хватает. Выглядеть в итоге должно как-то так:

Код
WD.ExportAsFixedFormat OutputFileName:=Filename, ExportFormat:=17

только Filename должно так же отдельно формироваться для PDF, чтобы формат был именно .pdf, а не .doc. Т.е. надо создать доп.переменную, такую же как Filename и назначать ей значение. После строки:

Код
Filename = ПутьДоговора & ФИО & РасширениеСоздаваемыхФайлов

записать еще одну:

Код
FilenamePDF = ПутьДоговора & ФИО & ".pdf"

и для сохранения в PDF использовать её:

Код
WD.ExportAsFixedFormat OutputFileName:=FilenamePDF, ExportFormat:=17

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

RAN

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

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

#6

16.01.2017 11:00:51

Цитата
khmelae написал:
но чтобы я не делал файл не открываются автоматически

Он открывается, только в скрытом режиме.
Отобразите word на экране

Код
 WA.Visible = True
 

khmelae

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

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

#7

17.01.2017 00:21:46

Добрый вечер!
Большое спасибо за помощь

The_Prist

.
Вопрос с сохранением в формате .pdf решен, все работает. рабочий код см. ниже. Было достаточно внести два изменения:

Const РасширениеСоздаваемыхФайлов = «.pdf»

WD.ExportAsFixedFormat OutputFileName:=Filename, ExportFormat:=17 ‘ сохранение в pdf
WD.Close False: DoEvents ‘ закрытие файла

Код
Const ИмяФайлаШаблона = "ШАБЛОНЫ/1401-1.dotx"
Const ИмяФайлаДоговора = "ПЕЧАТНЫЕ ФОРМЫ/1401-1"
Const КоличествоОбрабатываемыхСтолбцов = 134
Const РасширениеСоздаваемыхФайлов = ".pdf"
Sub СформироватьДоговоры()
    ПутьШаблона = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, ИмяФайлаШаблона)
    ПутьДоговора = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, ИмяФайлаДоговора)
    Dim row As Range, pi As New ProgressIndicator
    r = Cells(Rows.Count, "DA").End(xlUp).row: rc = r - 2
    If rc < 1 Then MsgBox "Строк для обработки не найдено", vbCritical: Exit Sub
    pi.Show "Формирование договоров": pi.ShowPercents = True: s1 = 10: s2 = 90: p = s1: a = (s2 - s1) / rc
    pi.StartNewAction , s1, "Запуск приложения Microsoft Word"
    ' Dim WA As Word.Application, WD As Word.Document: Set WA = New Word.Application    ' c подключением библиотеки Word
    Dim WA As Object, WD As Object: Set WA = CreateObject("Word.Application")    ' без подключения библиотеки Word
    For Each row In ActiveSheet.Rows("3:" & r)
        With row
            НазваниеФайла = " " & Trim$(.Cells(105)) & " " & Get_Now
            Filename = ПутьДоговора & НазваниеФайла & РасширениеСоздаваемыхФайлов
            pi.StartNewAction p, p + a / 3, "Создание нового файла на основании шаблона", НазваниеФайла
            Set WD = WA.Documents.Add(ПутьШаблона): DoEvents
            pi.StartNewAction p + a / 3, p + a * 2 / 3, "Замена данных ...", НазваниеФайла
            For i = 1 To КоличествоОбрабатываемыхСтолбцов
                FindText = Cells(1, i): ReplaceText = Trim$(.Cells(i))
                ' так почему-то заменяет не всё (не затрагивает таблицу)
                'WA.Selection.Find.Execute FindText, , , , , , , wdFindContinue, False, ReplaceText, True
                pi.line3 = "Заменяется поле " & FindText
                With WD.Range.Find
                    .Text = FindText
                    .Replacement.Text = ReplaceText
                    .Forward = True
                    .Wrap = 1
                    .Format = False: .MatchCase = False
                    .MatchWholeWord = False
                    .MatchWildcards = False
                    .MatchSoundsLike = False
                    .MatchAllWordForms = False
                    .Execute Replace:=2
                End With
                DoEvents
            Next i
            pi.StartNewAction p + a * 2 / 3, p + a, "Сохранение файла ...", НазваниеФайла, " "
            WD.ExportAsFixedFormat OutputFileName:=Filename, ExportFormat:=17 ' сохранение в pdf
            'WD.SaveAs Filename: WD.Close False: DoEvents
            'WD.PrintOut: WD.Close False: DoEvents 'печать без сохранения
            WD.Close False: DoEvents
            p = p + a
        End With
    Next row
    pi.StartNewAction s2, , "Завершение работы приложения Microsoft Word", " ", " "
    WA.Quit True: pi.Hide
    msg = "Сформировано " & rc & " договоров. Все они находятся в папке" & vbNewLine & ПутьДоговора
    MsgBox msg, vbInformation, "Готово"
    
End Sub

'Function NewFolderName() As String
   ' NewFolderName = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, ИмяФайлаДоговора & Get_Now)
   ' MkDir NewFolderName
'End Function

Function Get_Date() As String: Get_Date = Replace(Replace(DateValue(Now), "/", "-"), ".", "-"): End Function
Function Get_Time() As String: Get_Time = Replace(TimeValue(Now), ":", "-"): End Function
Function Get_Now() As String: Get_Now = Get_Date & " в " & Get_Time: End Function

Изменено: khmelae17.01.2017 00:25:51

 

khmelae

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

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

#8

17.01.2017 01:26:42

Цитата
The_Prist написал:
Они вообще у Вас создаются?

Да создаются, я прикрепил вложение можете проверить.

По вопросу автоматического открытия / не закрытия сохраненного документа пока решения не нашел

The_Prist

.  Ваш вариант с удалением из кода «WD.Close False:» кажется логичным и правильным, но почему то не работает.
У меня есть одна догадка, суть работы макроса заключается в открытии файла шаблона DOT замене необходимых полей и сохранением файлов в формате DOС. При этом насколько я понимаю в процессе работы макроса сами созданные файлы DOС не открываются. Поэтому может быть эту проблему можно решить через открытие созданных документов DOС, но как правильно это сделать для меня пока не ясно(((

Цитата
RAN написал:
Он открывается, только в скрытом режиме.
Отобразите word на экране
Код ? 1WA.Visible = True

RAN я не совсем понимаю куда можно применить данный метод «WA.Visible = True «

Код
Const ИмяФайлаШаблона = "ШАБЛОНЫ/шаблон2.dot"
Const ИмяФайлаДоговора = "ДОГОВОРА/Договоры"
Const КоличествоОбрабатываемыхСтолбцов = 11
Const РасширениеСоздаваемыхФайлов = ".doc"
Sub СформироватьДоговоры()
    ПутьШаблона = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, ИмяФайлаШаблона)
    ПутьДоговора = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, ИмяФайлаДоговора)
    'НоваяПапка = NewFolderName & Application.PathSeparator
    Dim row As Range, pi As New ProgressIndicator
    r = Cells(Rows.Count, "C").End(xlUp).row: rc = r - 2
    If rc < 1 Then MsgBox "Строк для обработки не найдено", vbCritical: Exit Sub
    pi.Show "Формирование договоров": pi.ShowPercents = True: s1 = 10: s2 = 90: p = s1: a = (s2 - s1) / rc
    pi.StartNewAction , s1, "Запуск приложения Microsoft Word"
    ' Dim WA As Word.Application, WD As Word.Document: Set WA = New Word.Application    ' c подключением библиотеки Word
    Dim WA As Object, WD As Object: Set WA = CreateObject("Word.Application")    ' без подключения библиотеки Word
    For Each row In ActiveSheet.Rows("3:" & r)
        With row
            ФИО = Trim$(.Cells(3)) & " " & Trim$(.Cells(4)) & " " & Trim$(.Cells(5) & Get_Now)
            Filename = ПутьДоговора & ФИО & РасширениеСоздаваемыхФайлов
            pi.StartNewAction p, p + a / 3, "Создание нового файла на основании шаблона", ФИО
            Set WD = WA.Documents.Add(ПутьШаблона): DoEvents
            pi.StartNewAction p + a / 3, p + a * 2 / 3, "Замена данных ...", ФИО
            For i = 1 To КоличествоОбрабатываемыхСтолбцов
                FindText = Cells(1, i): ReplaceText = Trim$(.Cells(i))
                ' так почему-то заменяет не всё (не затрагивает таблицу)
                'WA.Selection.Find.Execute FindText, , , , , , , wdFindContinue, False, ReplaceText, True
                pi.line3 = "Заменяется поле " & FindText
                With WD.Range.Find
                    .Text = FindText
                    .Replacement.Text = ReplaceText
                    .Forward = True
                    .Wrap = 1
                    .Format = False: .MatchCase = False
                    .MatchWholeWord = False
                    .MatchWildcards = False
                    .MatchSoundsLike = False
                    .MatchAllWordForms = False
                    .Execute Replace:=2
                End With
                DoEvents
            Next i
            pi.StartNewAction p + a * 2 / 3, p + a, "Сохранение файла ...", ФИО, " "
            WD.SaveAs Filename: DoEvents ' сохранить и открыть/незакрывать
            'WD.SaveAs Filename: WD.Close False: DoEvents ' сохранить и закрыть
            'WD.PrintOut: WD.Close False: DoEvents ' печать без сохранения
            p = p + a
        End With
    Next row
    pi.StartNewAction s2, , "Завершение работы приложения Microsoft Word", " ", " "
    WA.Quit True: pi.Hide
    msg = "Сформировано " & rc & " договоров. Все они находятся в папке" & vbNewLine & НоваяПапка
    MsgBox msg, vbInformation, "Готово"
End Sub





'Function NewFolderName() As String
   ' NewFolderName = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, ИмяФайлаДоговора & Get_Now)
   ' MkDir NewFolderName
'End Function
Function Get_Date() As String: Get_Date = Replace(Replace(DateValue(Now), "/", "-"), ".", "-"): End Function
Function Get_Time() As String: Get_Time = Replace(TimeValue(Now), ":", "-"): End Function
Function Get_Now() As String: Get_Now = Get_Date & " в " & Get_Time: End Function

Прикрепленные файлы

  • CreateWordDocuments2.rar (37.92 КБ)

Изменено: khmelae17.01.2017 01:35:39

 

Logistic

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

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

khmelae

, а что нужно изменить в коде ,что бы можно было формировать  один договор ,выделили в таблице  ячейку «Прізвище» Дзюба и получили договор по конкретной Фамилии.

 

The_Prist

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

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

Профессиональная разработка приложений для MS Office

#10

17.01.2017 10:32:17

Цитата
khmelae написал:
в процессе работы макроса сами созданные файлы DOС не открываются

открываются. И даже по коду видно, что открываются, заполняются и далее СОХРАНЯЮТСЯ КАК. А это значит, что они остаются открытыми. Об этом же говорит строка WD.Close, т.к. если бы они не были открыты — зачем их закрывать?
Просто, вполне очевидно, что Вам надо еще убрать строку WA.Quit. Это закрытие Word-а полностью. А вместе с ним, естественно, закрываются и все документы.

Цитата
khmelae написал:
не совсем понимаю куда можно применить данный метод «WA.Visible = True «

сразу после строки:

Код
Dim WA As Object, WD As Object: Set WA = CreateObject("Word.Application")

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

khmelae

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

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

#11

18.01.2017 00:40:11

Ооо то что надо спасибо

The_Prist

, теперь я понял как применить идею

RAN

, ему тоже спасибо за помощь.

И так позволю себе подвести промежуточные итоги по улучшению данного макроса. Пример подкрепляю к данному сообщению, код макроса с различными вариантами его работы выкладываю ниже.

Цитата
Logistic написал:
а что нужно изменить в коде ,что бы можно было формировать  один договор ,выделили в таблице  ячейку «Прізвище» Дзюба и получили договор по конкретной Фамилии.

Logistic

я к сожалению не так хорошо разбираюсь в написании макросов чтобы, так просто и легко написать Вам изменение для формирования договора по выделенной ячейки, могу сказать одно что это точно можно реализовать, т.к. я видел похожие решения на др. форумах, но как реализовать конкретно для этого макроса я не подскажу. Попробуйте обратится к Богу Excel

The_Prist

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

Logistic

задачи без внесения изменений в данный макрос. Как вариант можно использовать формулу ВПР и дополнительный столбец с отметкой какую строку нужно сформировать как договор, это если надо сформировать только один договор из списка (пример во вложении). Если же Вам необходимо сформировать несколько договоров то можно использовать ВПР + массив. Если не разберетесь пишите ;)

Код
Const ИмяФайлаШаблона = "ШАБЛОНЫ/шаблон2.dot"
Const ИмяФайлаДоговора = "ДОГОВОРА/Договоры"
Const КоличествоОбрабатываемыхСтолбцов = 19
Const РасширениеСоздаваемыхФайлов = ".doc"
Sub СформироватьДоговоры()
    ПутьШаблона = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, ИмяФайлаШаблона)
    ПутьДоговора = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, ИмяФайлаДоговора)
    'НоваяПапка = NewFolderName & Application.PathSeparator
    Dim row As Range, pi As New ProgressIndicator
    r = Cells(Rows.Count, "K").End(xlUp).row: rc = r - 2
    If rc < 1 Then MsgBox "Строк для обработки не найдено", vbCritical: Exit Sub
    pi.Show "Формирование договоров": pi.ShowPercents = True: s1 = 10: s2 = 90: p = s1: a = (s2 - s1) / rc
    pi.StartNewAction , s1, "Запуск приложения Microsoft Word"
    ' Dim WA As Word.Application, WD As Word.Document: Set WA = New Word.Application    ' c подключением библиотеки Word
    Dim WA As Object, WD As Object: Set WA = CreateObject("Word.Application")    ' без подключения библиотеки Word
    WA.Visible = True ' отобразить Word
    
    For Each row In ActiveSheet.Rows("3:" & r)
        With row
            ФИО = Trim$(.Cells(11)) & " " & Trim$(.Cells(12)) & " " & Trim$(.Cells(13) & Get_Now)
            Filename = ПутьДоговора & ФИО & РасширениеСоздаваемыхФайлов
            pi.StartNewAction p, p + a / 3, "Создание нового файла на основании шаблона", ФИО
            Set WD = WA.Documents.Add(ПутьШаблона): DoEvents
            pi.StartNewAction p + a / 3, p + a * 2 / 3, "Замена данных ...", ФИО
            For i = 11 To КоличествоОбрабатываемыхСтолбцов
                FindText = Cells(1, i): ReplaceText = Trim$(.Cells(i))
                ' так почему-то заменяет не всё (не затрагивает таблицу)
                'WA.Selection.Find.Execute FindText, , , , , , , wdFindContinue, False, ReplaceText, True
                pi.line3 = "Заменяется поле " & FindText
                With WD.Range.Find
                    .Text = FindText
                    .Replacement.Text = ReplaceText
                    .Forward = True
                    .Wrap = 1
                    .Format = False: .MatchCase = False
                    .MatchWholeWord = False
                    .MatchWildcards = False
                    .MatchSoundsLike = False
                    .MatchAllWordForms = False
                    .Execute Replace:=2
                End With
                DoEvents
            Next i
            pi.StartNewAction p + a * 2 / 3, p + a, "Сохранение файла ...", ФИО, " "
            WD.SaveAs Filename: 'сохранить созданый документ
            'или
            'WD.ExportAsFixedFormat OutputFileName:=Filename, ExportFormat:=17 ' сохранение в pdf
            'или
            'WD.PrintOut:'печать без сохранения
            
            'WD.Close False: DoEvents 'закрыть созданый документ Word
            
            p = p + a
        End With
    Next row
    pi.StartNewAction s2, , "Завершение работы приложения Microsoft Word", " ", " "
    'WA.Quit True: 'закрыть приложение Word
    pi.Hide
    msg = "Сформировано " & rc & " договоров. Все они находятся в папке" & vbNewLine & НоваяПапка
    MsgBox msg, vbInformation, "Готово"
End Sub





'Function NewFolderName() As String
   ' NewFolderName = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, ИмяФайлаДоговора & Get_Now)
   ' MkDir NewFolderName
'End Function
Function Get_Date() As String: Get_Date = Replace(Replace(DateValue(Now), "/", "-"), ".", "-"): End Function
Function Get_Time() As String: Get_Time = Replace(TimeValue(Now), ":", "-"): End Function
Function Get_Now() As String: Get_Now = Get_Date & " в " & Get_Time: End Function

 

Прикрепленные файлы

  • CreateWordDocuments3.rar (27.75 КБ)

Изменено: khmelae18.01.2017 00:43:20

 

msdmo

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

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

Доброго времени суток.
Подскажите пожалуйста, какие параметры надо изменить в коде макроса, если мне надо добавить слева один столбик и сверху 8 строк?
Поменял в строках:
r = Cells(Rows.Count, «B«).End(xlUp).row: rc = r — 10
For Each row In ActiveSheet.Rows(«11:» & r)
ФИО = Trim$(.Cells(2)) & » » & Trim$(.Cells(3)) & » » & Trim$(.Cells(4))
Вордовские документы формируются, но данные не вставляются.

Прикрепленные файлы

  • test1.zip (53.5 КБ)

 

msdmo

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

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

#13

19.05.2017 16:17:45

Сделал.

Код
FindText = Cells(9, i): ReplaceText = Trim$(.Cells(i)) 'менять номер строки с фигурными скобками

Ещё ошибки возникают, если объединённая ячейка попадается ((

МЕНЮ САЙТА

  • 1
  • 2
  • 3

КАТЕГОРИИ РАЗДЕЛА

ОПРОСЫ


Слияние данных MS Excel и MS Word

Часто данные электронной таблицы требуется использовать при составлении различных документов: отчетов, писем, договоров и т.д. В этом случае удобно использовать слияние данных MS Excel и MS Word.

Процедура слияния состоит из нескольких этапов.

1 этап. Подготовка данных электронной таблицы

Таблица, предназначенная для слияния, должна удовлетворять некоторым требованиям:

  • в таблице не должно быть объединенных ячеек. Вернее сказать так: ЕСЛИ в таблице есть объединённые ячейки, то надо быть готовым к тому, что при экспорте объединение будет отменено, и соответственно образуются лишние пустые строки и/или столбцы, что может нарушить структуру таблицы. В общем, объединённые ячейки — это зло :)
  • все столбцы должны иметь уникальные названия, которые будут использоваться при слиянии. Если в таблице отсутствует первая строка с названиями столбцов, то её заменит первая строка данных, а значит, она в рассылке участвовать не будет.

В качестве примера возьмем таблицу с перечнем клиентов фитнес клуба «Экселент»

2 этап. Подготовка шаблона документа Word

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

Предположим всем клиентам, у которых срок действия клубной карты истекает в следующем месяце, планируется разослать письма с уведомлением.

Текст письма будет одинаковым за исключением обращения, номера клубной карты и даты окончания её действия. Эти данные будут импортироваться из таблицы Excel (выделено синим)

Таким образом, на этом этапе в документе Word печатается общий для всех писем текст.

Для более удобной дальнейшей работы при слиянии рекомендуется установить параметр Затенение полей в положение Всегда, чтобы отличать вставленные поля слияния от обычного текста. Если этот параметр включен, поля отображаются на сером фоне. На печать этот фон, естественно, не выводится.

3 этап. Работа Мастера слияния MS Word

Открываем файл письма в MS Word.

Проще всего осуществить слияние данных, следуя указаниям Мастера слияния. В версиях после Word2003 Мастер слияния запускается с помощью кнопки Начать слияние на вкладке Рассылки

В версиях до Word2007 следует выполнить команду меню Сервис — Письма и рассылки — Слияние. Кроме того, для более удобной работы версиях до Word2007 можно вывести панель инструментов Слияние

Ещё раз обращаю внимание, что в бланке письма содержится только общий для всех писем текст, поэтому обращение выглядит как Уважаем!, а номер карты и дата пропущены.

Работа Мастера слияния включает 6 шагов.

1 шаг: выбираем тип документа для рассылки, в нашем случае это Письма
2 шаг: выбираем документ, на основе которого будут создаваться рассылки, им может быть открытый текущий документ, шаблон или существующий документ. При выборе варианта Шаблон или Существующий документ появляется возможность указать нужный файл в Проводнике. Мы выбираем Текущий документ

3 шаг: выбираем получателей. В нашем случае источником данных будет таблица Excel, значит отмечаем вариант Использование списка. Затем с помощью кнопки Обзор… выбираем нужный файл в Проводнике
После выбора файла раскрывается диалоговое окно с выбранной таблицей. Если нам нужны все записи, то сразу нажимаем ОК. При необходимости можно список отсортировать, отфильтровать нужные записи, либо найти их с помощью соответствующих команд. Возможности фильтрации и поиска здесь, конечно, намного беднее, чем в Excel, но сделать простейшую выборку по текстовым или числовым значениям можно. Кроме того, возможно выбрать записи для рассылки вручную с помощью флажков :)

В нашем случае требуется установить фильтр по полю Рассылка по значению «да» (значение «да» появляется в таблице, если срок действия клубной карты истекает в следующем месяце). Фильтр можно установить, щёлкнув мышкой по названию поля и выбрав «да», либо воспользовавшись ссылкой Фильтр в этом же диалоговом окне

4 шаг: вставляем нужные поля в документ. Прежде, чем выбрать один из предложенных Мастером вариантов работы, следует установить курсор в тексте туда, куда Вы хотите вставить данные. Если Вы забыли это сделать, тоже ничего страшного, поля можно вставить в любое место документа, а затем перенести. В нашем случае ставим курсор после слова «Уважаем» перед восклицательным знаком. Так как нам нужны отдельные поля, выбираем Другие элементы…
Раскрывается диалоговое окно для выбора полей слияния.

Выбираем поле Имя, нажимаем Вставить, то же самое для поля Отчество. Закрываем окно Вставка полей слияния и добавляем пробелы между вставленными полями. Если параметр Затенение полей установлен в положение Всегда, то вставленные поля будут отчетливо видны на сером фоне. Устанавливаем курсор после №, снова нажимаем ссылку Другие элементы…, выбираем № клубной картыВставить. Аналогично вставляем поле Дата окончания действия карты

Кроме указанных выше полей требуется вставить окончание обращения ый(ая), которое зависит от значения поля Пол. Для этого воспользуемся  специальным полем, позволяющим вставлять одно из двух значений в зависимости от данных. Поставим курсор сразу после слова «Уважаем», нажмём кнопку Правила на вкладке Рассылки и выберем вариант IF…THEN…ELSE. В версиях до Word2007 аналогичная кнопка называется Добавить поле Word и находится на панели инструментов Слияние

В раскрывшемся диалоговом окне зададим параметры

После нажатия ОК, получим результат

5 шаг: просматриваем получившиеся письма, используя кнопки навигации. На этом шаге также можно изменить список получателей, применив фильтр или убрав флажки. Так как мы применили фильтр ранее, получателей осталось 3.
Присмотревшись повнимательней к полученному результату, видим, что он не вполне соответствует нашим ожиданиям

Номер клубной карты вместо 001768 отображается как 1768, а дата и вовсе не по-нашему: сначала месяц, а потом день, хотя в таблице Excel всё было в порядке. Такие же неприятности могут возникнуть при импорте ячеек с десятичными числами, денежным форматом и т.д. Вывод неутешительный: при слиянии форматирование чисел и дат не сохраняется. Но выход есть!

Поля документа Word, в которые вставляются наши данные, представляют собой код, который, во-первых, можно посмотреть, а во-вторых, изменить. Чтобы увидеть код поля, например, с номером клубной карты, следует кликнуть по нему правой кнопкой мыши (ПКМ) и выбрать команду Коды/Значения полей.
Получим следующее 

{ MERGEFIELD «M__клубной_карты» }
Сам код изменять мы не будем, а вот формат допишем. Принцип добавления формата будет понятен любому, кто хоть немного знаком с созданием пользовательского формата в Excel. Чтобы число всегда состояло из шести цифр, формат должен состоять из шести нулей:
{ MERGEFIELD «M__клубной_карты»  #  «000000»  }. Теперь снова ПКМ по полю — Обновить поле, и видим число в нужном формате.

Аналогично поступаем с датой 
{ MERGEFIELD «дата_окончания_действия_карты»  @ 
«
DD.MM.YYYY»  }


И получаем окончательный вариант


Подробнее о кодах полей Word можно прочитать в справочной системе Word или на официальном сайте Microsoft

6 шаг: выбираем вариант Изменить часть писем… и просматриваем получившийся документ, при необходимости его можно отредактировать, сохранить как отдельный файл или отправить на печать

       

*если в файле с базой клиентов при открытии в Excel2003 вместо формул будут отображаться ошибки #ИМЯ!, подключите надстройку Пакет анализа (Сервис — Надстройки)

  • 1
  • 2
  • 3
  • 4
  • 5

Категория: Интеграция Excel с другими приложениями | Добавил: Pelena (22.11.2012)

Просмотров: 315468 | Комментарии: 63
| Теги: рассылки, Слияние данных
| Рейтинг: 4.7/15

Всего комментариев: 61 1 2 3 »

Порядок вывода комментариев:

   Никак не найду в 2003 офисе в указанном месте функцию «Пакет анализа». Может как то по другому называется?

0
 

   Ага, сделал, спасибо! Просто там есть и «надстройка» и «настройки» ;)

Еще вот проблема: все вставки получаются одни и те же, т.е. делаю, например, первую вставку с данными «имя», потом делаю вставку с данными «фамилия», при этом, первая вставка из имени автоматом превращается в фамилию. И так постоянно, каждая новая вставка меняет все предыдущие на однотипную — последнюю. Вроде всяко перепробовал, но ничего не выходит.

Еще не нашел где активировать «затенение полей»

   Спасибо большое за статью! Благодаря вам сэкономила несколько часов лишней работы! :)

0
 


   Хороший вопрос.
В этом случае структура поля будет примерно следующей:
{ = { MERGEFIELD «имя_вашего_поля» } *100 # «0%» }
Причем вторые фигурные скобки надо будет поставить через Ctrl+F9. Подробнее: выделяем { MERGEFIELD «имя_вашего_поля» }, нажимаем Ctrl+F9, затем внутри внешних фигурных скобок дописываем недостающие символы, не забывая в начале =

12   
Prickly  
(23.12.2014 08:58)
[
Материал]

   Т.е. имеется ввиду в одном и том же документе Word создать 100 шаблонов письма и вставить туда по одной строке из Excel?

0
 


   Здравствуйте. Зачем все просматривать? Если выборку делать не надо, то и просматривать незачем, просто в Мастере жмите Далее

14   
Prickly  
(23.12.2014 09:31)
[
Материал]

   Pelena,
дело в том, что я хочу, чтобы все строки по своим письмам сохранились в одном и том же документе, получается 100 писем.
Но когда я вставляю у меня вставляется только одно значение, а остальные могу видеть только через кнопки просмотреть следующее или предыдущее, а я хочу чтобы 1 строка сохранилась в первом шаблоне, а остальные снизу в таких же шаблонах.

0
 


   Похоже, Вы работу Мастера не завершили. Должен получиться один документ, в котором 100 листов. Если не разберётесь, задайте вопрос на форуме, приложив пример файла

16   
Prickly  
(23.12.2014 09:45)
[
Материал]

   Может вы поможете?
Я дошел до последнего шага в примере. Изменить части писем и Печать. Где завершается работа Мастера?

0
 


   Правильно, сколько страниц в документе получилось? Теперь можете Мастер закрыть, а с документом работать, как обычно, сохранить, редактировать и т.д. Не пойму, что Вас смущает? Если Вы хотите, чтобы на листе было несколько шаблонов, то на первом шаге Мастера выберите Наклейки, а не Письма

18   
Prickly  
(23.12.2014 11:26)
[
Материал]

   Pelena,
Мой шаблон такой, что на одном листе 2 шаблона. Получается мне нужно 50 страниц в документе Word. 1 строка = 1 шаблон.
Сделал накрейки, но все равно не получается ((((

0
 


   Не видя файла, больше ничего сказать не могу. Добро пожаловать на форум

   Получилось ))))))))))))) Урээ!!
Елена,
а теперь не подскажите, как это можно автоматизировать?


   со вставкой даты возникли проблемы.
вставляется дата в формате число: 41997
применение формата @ «DD.MM.YYYY» не помогло :(

0
 


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


   к сожалению на работе политика ИБ не даёт загружать файлы на данный ресурс :(
я почитал help по ссылке на сайте Майкрософт, не получается.
вот в фигурных скобках код поля: MERGEFIELD «F21» @ «dd.MM.yyyy»
F21 — это ссылка на колонку в таблице Excel, данные в формате «дата».

0
 


   Пришлите кусок файла Excel и документ мне на почту, она есть на Глваной странице сайта в контактах

1-25 26-50 51-61

Добавлять комментарии могут только зарегистрированные пользователи.

[

Регистрация

|

Вход

]

Содержание

  • Вариант 1: Microsoft Office 2007 – 2021
    • Шаг 1: Подготовка данных таблицы Microsoft Excel
    • Шаг 2: Подготовка шаблона документа Microsoft Word
    • Шаг 3: Добавление поля слияния на страницу
    • Шаг 4: Проверка результатов
    • Шаг 5: Завершение слияния
  • Вариант 2: Microsoft Office 2003
  • Вопросы и ответы

как сделать слияние word и excel

Вариант 1: Microsoft Office 2007 – 2021

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

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

Подробнее: Как перенести таблицу из Microsoft Excel в Word со связью

как сделать слияние word и excel_01

Важно! Все рассмотренные далее действия будут выполняться на примере программного обеспечения Microsoft Office 2016. По этой причине могут наблюдаться некоторые отличия в интерфейсе в сравнении с другими версиями текстового редактора. Но руководство все равно является актуальными, а серьезные отличия будут помечаться.

Шаг 1: Подготовка данных таблицы Microsoft Excel

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

Подробнее: Как разъединить ячейки в Microsoft Excel

как сделать слияние word и excel_02

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

Подробнее: Как сделать заголовок столбцов в Microsoft Excel

как сделать слияние word и excel_03

Если база данных с исходными значениями создается в Microsoft Excel с нуля, рекомендуем воспользоваться «Умной таблицей». Это позволит облегчить соблюдение всех вышеописанных требований. На нашем сайте есть статья, в которой подробно рассматривается использование этой функции табличного редактора.

Подробнее: Как создать умную таблицу в Microsoft Excel

как сделать слияние word и excel_04

Lumpics.ru

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

Шаг 2: Подготовка шаблона документа Microsoft Word

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

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

как сделать слияние word и excel_05

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

Читайте также:
Как убрать красное / синее / зеленое подчеркивание текста в Microsoft Word
Как пропустить все ошибки в документе Microsoft Word

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

  1. Откройте меню «Файл», кликнув по одноименной вкладке в Microsoft Word 2013 – 2021 или нажав по иконке в верхнем левом углу в Microsoft Word 2007 – 2010.
  2. как сделать слияние word и excel_06

  3. На боковой панели слева щелкните по пункту «Параметры», чтобы открыть окно настроек программы.
  4. как сделать слияние word и excel_07

  5. Воспользовавшись навигационной панелью в левой части интерфейса, перейдите в раздел «Дополнительно» и в блоке «Показать содержимое документа» из выпадающего меню «Затенение полей» выберите значение «Всегда». После этого нажмите по кнопке «ОК», чтобы сохранить изменения.
  6. как сделать слияние word и excel_08

    На этом предварительная настройка документов считается завершенной, можно переходить непосредственно к слиянию Microsoft Word и базы данных Excel.

Шаг 3: Добавление поля слияния на страницу

Все инструменты для выполнения слияния находятся на вкладке «Рассылки». На данном этапе выполнения поставленной задачи важны только два блока инструментов — «Начало слияния» и «Составление документа и вставка полей».

как сделать слияние word и excel_09

Процедура слияния подразумевает добавление на страницу документа полей с соответствующей информацией, которая будет браться из заранее подготовленной таблицы Microsoft Excel. Для этого необходимо сделать следующее:

  1. Раскройте выпадающий список «Начать слияние», который находится в блоке «Начало слияния». Затем кликните в нем по предпочитаемому шаблону. В качестве примера будет выбран пункт «Письма», но работа с другими практически ничем не отличается.
    как сделать слияние word и excel_10

    Примечание! Если в выпадающем меню выбрать «Конверты» или «Наклейки», появится дополнительное диалоговое окно, в котором потребуется задать начальные параметры. Каждое действие сопровождается текстовой подсказкой, поэтому проблем возникнуть не должно. В остальном слияние выполняется описанным ниже способом.

  2. как сделать слияние word и excel_11

  3. Раскройте выпадающее меню «Выбрать получателей», которое расположено в том же блоке чуть ниже. В нем нажмите по опции «Использовать существующий список». Это позволит определить в качестве базы данных с исходными значениями заранее созданную таблицу Microsoft Excel.
  4. как сделать слияние word и excel_12

  5. В появившемся окне файлового менеджера перейдите в директорию, где находится таблица с данными, выделите ее щелчком левой кнопки мыши и нажмите «Открыть».
  6. как сделать слияние word и excel_13

  7. Если файл Excel содержит несколько листов с информацией, выберите необходимый и кликните по кнопке «ОК». Обратите также внимание на пункт «Первая строка данных содержит заголовки столбцов», если этот параметр соответствует действительности, установите отметку напротив него.
    как сделать слияние word и excel_14

    Обратите внимание! Если базу данных с исходными значениями необходимо будет сменить в будущем, воспользуйтесь опцией в блоке «Начало слияния», которая называется «Изменить список получателей». При ее вызове откроется файловый менеджер, в котором потребуется выбрать новую таблицу Excel.

  8. как сделать слияние word и excel_15

  9. Установите курсор в то место документа, куда необходимо вставить информацию, взятую из таблицы. Для этого раскройте в блоке «Составление документа и вставка полей» выпадающий список меню «Вставить поле слияния» и выберите нужный столбец данных. В качестве примера будет добавлено поле «Номер».
  10. как сделать слияние word и excel_16

  11. Аналогичным образом добавьте оставшиеся поля, каждый раз устанавливая курсор в нужное место и выбирая из выпадающего списка соответствующий параметр.
  12. как сделать слияние word и excel_17

Примечание! Оставшиеся инструменты в блоке «Составление документа и вставка полей» в практическом применении не нуждаются, они служат для автоматизации некоторых процессов при работе с большим объемом данных. Например, с помощью инструмента «Правила» можно задать некоторые условия вставки определенных полей, а вызвав диалоговое окно «Подбор полей» — заранее настроить дополнительные поля, чтобы быстро вставлять их посредством других опций.

как сделать слияние word и excel_18

Шаг 4: Проверка результатов

После добавления полей слияния на страницу документа информация из таблицы Excel отображаться в них не будет, из-за чего не получится визуально определить корректность подстановочных данных. Для этого необходимо воспользоваться другим инструментом вкладки «Рассылки», который так и называется — «Просмотр результатов».

как сделать слияние word и excel_19

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

как сделать слияние word и excel_20

Если необходимо проверить заполнение полей определенного получателя, следует воспользоваться диалоговым окном «Найти получателя». Кликните по нему и в появившемся меню введите в поле «Найти» информацию из любого столбца таблицы Excel. Затем определите область поиска. Чтобы повысить точность при обработке большого объема данных, установите переключатель в положение «по полю» и из выпадающего списка выберите непосредственно нужное поле. Затем кликните по кнопке «Найти далее».

как сделать слияние word и excel_21

Оставшийся инструмент в блоке «Просмотр результатов» необходим для поиска ошибок, которые могут возникнуть из-за наличия объединенных ячеек в таблице Excel или несоответствия форматирования некоторых полей. Текстовый процессор Word автоматически вычисляет все ошибки и составляет соответствующий отчет. Для этого кликните по кнопке «Поиск ошибок» и в появившемся диалоговом окне определите тип проверки, после чего нажмите по кнопке «ОК».

как сделать слияние word и excel_022

Шаг 5: Завершение слияния

После добавления всех необходимых полей на страницу документа и проверки корректности их отображения можно переходить непосредственно к массовой рассылке или печати. Все необходимые для этого инструменты расположены на вкладке «Рассылки» в блоке «Завершение».

как сделать слияние word и excel_23

Открыв выпадающий список пункта «Найти и объединить», можно увидеть три опции:

  1. «Изменить отдельные документы». Позволяет выбрать один документ для редактирования и дальнейшего применения (печати или рассылки). Для этого необходимо будет в блоке «Просмотр результатов» определить нужного получателя, затем установить отметку на пункте «текущую запись» и кликнуть по кнопке «ОК». Если выбрать несколько документов или все, они сольются воедино.
  2. как сделать слияние word и excel_24

  3. «Печать документов». Открывает подобное диалоговое окно, в котором необходимо выбрать количество записей и нажать по кнопке «ОК». В дальнейшем откроется стандартное окно для печати документов.
    как сделать слияние word и excel_25

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

    Подробнее: Как настроить печать документов в Microsoft Word

  4. как сделать слияние word и excel_26

  5. «Отправить электронные сообщения». Предоставляет диалоговое окно для настройки рассылки. Для корректной работы требуется, чтобы в базе данных Excel был отдельный столбец с перечнем адресов электронной почты каждого получателя, иначе этой функцией воспользоваться не получится.
  6. как сделать слияние word и excel_27

Вариант 2: Microsoft Office 2003

В отличие от Microsoft Word 2007 – 2021 в версии 2003 года все ранее описанные действия выполняются иначе. Обусловлено это кардинально отличающимся интерфейсом программы. Но стоит отметить, что этапы выполнения поставленной задачи остаются неизменными. По этой причине ниже будет пропущена часть о подготовке базы данных в таблице Microsoft Excel и создании шаблона в текстовом редакторе. Также описание каждой функции будет кратким, так как полное уже приводилось выше в статье.

Примечание! Microsoft Word 2003 не имеет совместимости с новейшим форматом XSLX, поэтому, чтобы выполнить слияние, базу данных в Excel необходимо сохранять в формате XLS.

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

  1. Раскройте меню «Сервис», находящийся в верхней части интерфейса окна, и наведите курсор на пункт «Письма и рассылки», затем кликните по опции «Слияние».
  2. как сделать слияние word и excel_28

  3. В появившейся панели Мастера, расположенной в правой части окна, выберите из списка тип документа и щелкните «Далее. Открытие документа». Как и в примере ранее, сейчас будет выбран шаблон «Письма».
  4. как сделать слияние word и excel_29

  5. Определите документ, на основе которого будет осуществляться рассылка. Если шаблон создавался в текущем, выберите соответствующий пункт и нажмите «Далее. Выбор типа документа».
  6. как сделать слияние word и excel_30

  7. Возьмите в качестве исходного списка получателей заранее созданную таблицу Microsoft Excel. Для этого установите курсор в положение «Использование списка» и кликните по ссылке «Обзор», находящейся чуть ниже.
  8. как сделать слияние word и excel_31

  9. В новом окне файлового менеджера перейдите в директорию с нужным документом, выделите его и щелкните по кнопке «Открыть».
  10. как сделать слияние word и excel_32

  11. По аналогии с ранее рассмотренными версиями текстового процессора выберите лист книги с нужной информацией, установите при необходимости отметку напротив пункта «Первая строка данных содержит заголовки столбцов» и нажмите «ОК».
  12. как сделать слияние word и excel_33

  13. Поставьте отметки напротив тех строк списка, информация из которых необходима для создания слияния. В нижней части этого диалогового окна есть кнопки с дополнительными функциями. Посредством них можно сразу снять или добавить выделения на все пункты, выполнить поиск или замену. После завершения этой процедуры нажмите «ОК».
  14. как сделать слияние word и excel_34

  15. Вернувшись в главное окно текстового редактора, кликните по пункту «Далее. Создание писем», расположенном на панели мастера.
  16. как сделать слияние word и excel_35

  17. Установите курсор на странице документа в то место, куда будет вставлено поле, затем щелкните по строке «Другие элементы».
  18. как сделать слияние word и excel_36

  19. В новом окне поставьте переключатель в положение «Поля базы данных», выделите в списке нужное поле и кликните по кнопке «Вставить». Проследите за тем, чтобы на странице документа появилась соответствующая надпись.
  20. как сделать слияние word и excel_37

  21. Закройте окно, установите курсор в новое положение, а затем снова кликните по пункту «Другие элементы» и вставьте новое поле. Таким образом добавьте все необходимые элементы на страницу. После этого щелкните «Далее. Просмотр писем».
  22. как сделать слияние word и excel_38

  23. Воспользовавшись предложенными инструментами на панели Мастера, просмотрите все экземпляры документов и выявите неточности, впоследствии исправив их. Также с помощью кнопки «Исключить получателя» можно убрать лишние дубликаты. После завершения этой процедуры кликните по пункту «Далее. Завершение слияния».
  24. как сделать слияние word и excel_39

  25. Завершите слияние, нажав по строке «Печать». После этого откроется новое диалоговое окно, в котором останется выбрать количество печатаемых экземпляров. Также можно отдельно изменить часть писем, воспользовавшись соответствующей опцией на панели Мастера.
  26. как сделать слияние word и excel_40

Обратите внимание! В зависимости от выбранного типа создаваемого слияния, который определялся на втором шаге вышепредставленной инструкции, в завершающей части будут предложены разные действия. В данном случае это печать документа, но если было выбрано «Электронное сообщение», предлагалось бы ввести контактную информацию получателей.

В данном разделе мы рассмотрим трюк, с помощью которого можно автоматически создавать текстовые документы Word на основе данных, хранящихся в таблице Excel. Это бывает необходимо, например, для быстрого формирования текстовых отчетов, в которых должны фигурировать табличные данные. Использование этого приема мы рассмотрим на конкретном примере.

Предположим, что у нас есть следующие данные о продажах по регионам (рис. 3.31).

Внимание!

При изучении данного раздела следует обращать внимание на расположение данных на рабочем листе (то есть на координаты задействованных ячеек).

Для автоматического создания отчетов на основании приведенных данных следует в стандартном модуле редактора VBA написать код, приведенный в листинге 3.85.

Рис. 3.31. Данные о продажах

Листинг 3.85. Создание документов Word на основе таблицы Excel

Sub ReportToWord()

Dim intReportCount As Integer ‘ Количество сообщений

Dim strForWho As String ‘ Получатель сообщения

Dim strSum As String ‘ Сумма за товар

Dim strProduct As String ‘ Название товара

Dim strOutFileName As String ‘ Имя файла для сохранения

сообщения

Dim strMessage As String ‘ Текст дополнительного сообщения

Dim rgData As Range ‘ Обрабатываемые ячейки

Dim objWord As Object

Dim i As Integer

‘ Создание объекта Word

Set objWord = CreateObject(«Word.Application»)

‘ Информация с рабочего листа

Set rgData = Range(«A1»)

strMessage = Range(«E6»)

‘ Просмотр записей на листе Лист1

intReportCount = Application.CountA(Range(«A:A»))

For i = 1 To intReportCount

‘ Динамические сообщения в строке состояния

Application.StatusBar = «Создание сообщения » & i

‘ Назначение данных переменным

strForWho = rgData.Cells(i, 1).Value

strProduct = rgData.Cells(i, 2).Value

strSum = Format(rgData.Cells(i, 3).Value, «#,000»)

‘ Имя файла для сохранения отчета

strOutFileName = ThisWorkbook.path & «» & strForWho &

«.doc»

‘ Передача команд в Word

With objWord

.Documents.Add

With .Selection

‘ Заголовок сообщения

.Font.Size = 14

.Font.Bold = True

.ParagraphFormat.Alignment = 1

.TypeText Text:=»О Т Ч Е Т»

‘ Дата

.TypeParagraph

.TypeParagraph

.Font.Size = 12

.ParagraphFormat.Alignment = 0

.Font.Bold = False

.TypeText Text:=»Дата:» & vbTab & _

Format(Date, «mmmm d, yyyy»)

‘ Получатель сообщения

.TypeParagraph

.TypeText Text:=»Кому: менеджеру » & vbTab &

strForWho

‘ Отправитель

.TypeParagraph

.TypeText Text:=»От:» & vbTab &

Application.UserName

‘ Сообщение

.TypeParagraph

.TypeParagraph

.TypeText strMessage

.TypeParagraph

.TypeParagraph

‘ Название товара

.TypeText Text:=»Продано товара:» & vbTab &

strProduct

.TypeParagraph

‘ Сумма за товар

.TypeText Text:=»На сумму:» & vbTab & _

Format(strSum, «$#,##0»)

End With

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

.ActiveDocument.SaveAs FileName:=strOutFileName

End With

Next i

‘ Удаление объекта Word

objWord.Quit

Set objWord = Nothing

‘ Обновление строки состояния

Application.StatusBar = False

‘ Вывод на экран информационного сообщения

MsgBox intReportCount & » заметки создано и сохранено в папке » _

& ThisWorkbook.path

End Sub

В результате написания кода в окне выбора макросов станет доступным макрос ReportToWord. После его запуска начнется формирование отчетов (информация о состоянии процесса будет отображаться в строке состояния). По окончании процесса на экране отобразится окно с сообщением о том, что документы сформированы и помещены в ту папку, в которой хранится текущая рабочая книга. В рассматриваемом примере будут созданы три документа с именами Магазин 1.doc, Магазин 2.doc и Магазин 3.doc. Содержимое документа Магазин 1. doc показано на рис. 3.32 (другие документы выглядят аналогичным образом).

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

Рис. 3.32. Документ Word, созданный на основе данных таблицы Excel

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

TypeParagraph — является членом объекта Selection. Если вы перейдёте в программу Word, октроете программу VBA, введёте ActiveDocument и поставите точку, то во всплывающей подсказке не будет TypeParagraph. Это означает, что у объекта ActiveDocument нет члена TypeParagraph (могут быть исключения — член не появляется, но есть, но это бывает редко).

Здесь:

Visual Basic
1
ActiveDocument.Content.Font.Size = 11

вы используете ActiveDocument, а должны использовать oDocument, т.к. вся работа у вас из Excel в программе Word ведётся через две переменные: oWord и oDocument. Других слов ваш код не понимает, в т.ч. не понимает слова ActiveDocument.

Нередко возникают ситуации, когда информацию, приведенную в электронной таблице, нужно использовать для создания договоров, отчетов и других важных документов. Этот нелегкий процесс можно автоматизировать с помощью слияния данных из MS Excel и Word.

Содержание

  1. Что такое слияние Excel и Word?
  2. Как осуществить слияние данных Ворд и Эксель?
  3. Шаг 1. Подготовка данных таблицы Excel (источника данных)
  4. Настройка источника данных
  5. Шаг 2. Подготовка шаблона документа Word
  6. Работа с Мастером слияния Word
  7. Объединение таблицы Ворд и Эксель
  8. Слияние текстов Ворда и Эксель
  9. Выводы

Что такое слияние Excel и Word?

Под слиянием подразумевается перенос данных из электронной таблицы в Word. 

Как осуществить слияние данных Ворд и Эксель?

Слияние данных осуществляется в несколько шагов. Сначала осуществляется подготовка данных таблицы на уровне Эксель, после чего осуществляется перенос информации в Word. 

Есть несколько требований к исходной таблице, которые должны быть соблюдены:

  1. Обязательно, чтобы каждый столбец таблицы, которая переносится в вордовский файл, был озаглавлен. При этом названия должны быть разными, не допускаются повторы. 
  2. Кроме этого, в таблице не должно содержаться ячеек, которые были перед этим соединены. В ином случае при переносе строки могут смещаться, что вызовет много дополнительных сложностей. 

Простыми словами, уже на этапе создания таблицы Эксель она должна быть в таком же формате, как таблица в Ворд.

Шаг 1. Подготовка данных таблицы Excel (источника данных)

Итак, давайте немного разберемся с тем, как подготовить таблицу. Желательно переконвертировать диапазон в формат умной таблицы с помощью комбинации клавиш Ctrl + T. После этого нужно непосредственно осуществить настройку и подготовку данных. 

Настройка источника данных

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

Слияние данных MS Word и MS Excel

1

Главное правило подготовки источника данных – проверка соблюдения описанных выше требований и адаптацию таблицы под них. Это делается вручную, путем разъединения ячеек и добавления заголовков к колонкам.

Шаг 2. Подготовка шаблона документа Word

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

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

На скриншоте ниже эта информация отображается сними цветом.

Слияние данных MS Word и MS Excel

2

Настоятельно рекомендуется, чтобы работа была более удобной, установить параметр «Затенение полей» на значение «Всегда». Так будет значительно проще различать, какие данные были вставлены автоматически, а какие уже были в шаблоне. Просто соответствующие места будут выделены серым цветом. Естественно, это выделение не сохраняется при печати, данные выглядят так, как будто письмо набиралось вручную.

Работа с Мастером слияния Word

Наиболее удобно использовать мастер влияния, чтобы перенести часть данных из Эксель в Ворд. Для этого открываем наш шаблон в Word, после чего нажимаем кнопку «Начать слияние», которая находится на вкладке «Рассылки» (все это касается версий Office, начиная с 2007).

Далее нужно выбрать пункт «Пошаговый мастер слияния».

Слияние данных MS Word и MS Excel

3

Если же используется старая версия Microsoft Office, то эта функция все равно есть, но чтобы получить к ней доступ, нужно воспользоваться такими пунктами меню: Сервис – Письма и рассылки – Слияние. Также можно вывести соответствующую кнопку на панель инструментов, чтобы сделать работу более комфортной. 

Важно особенно акцентировать внимание на то, что в шаблоне, который был создан на предыдущем этапе, должен содержаться общий текст. То есть, даже слово «Уважаемый» нужно написать без окончания – «Уважаем». Далее оно будет вставлено автоматически. 

А теперь опишем на практике, как мастер слияния используется:

  1. Сначала выбирается тип документа. Это могут быть как электронные, так и обычные письма. Также возможен выбор ряда других типов документов.
    Слияние данных MS Word и MS Excel
    4
  2. Далее надо выбрать тот документ, который будет использоваться для рассылки писем (или того, что вы выбрали на предыдущем этапе). Это может быть как текущий документ, так и находящийся в другом файле. Также можно выбрать пункт «Шаблон». В двух последних случаях будет предложено выбрать файл, в который будут автоматически вставляться данные из Эксель таблицы. В нашем примере мы выберем пункт «Существующий документ».
    Слияние данных MS Word и MS Excel
    5
  3. Выбор получателей. В случае с нами в качестве получателей будет использоваться список контактов из Эксель таблицы. Соответственно, нас интересует пункт «Использование списка». А непосредственно выбрать тот список, который будет использоваться в качестве источника данных, можно с помощью кнопки «Обзор», которая располагается немного ниже.
    Слияние данных MS Word и MS Excel
    6
  4. Далее нужно выбрать файл с источником данных. После того, как он будет выбран, появится диалог, в котором будет та же таблица, которая у нас есть в экселевском документе. Далее нужно выбрать те записи, которые нас интересуют в конкретный момент времени. Если все, то достаточно просто нажать клавишу ОК. Если появляется такая необходимость, можно осуществить сортировку перечня, фильтрование соответствующих данных или же воспользоваться соответствующими командами, чтобы их найти. Конечно, в Excel встроенный фильтр значительно функциональнее, но в целом, можно отсеять ряд данных, основываясь на текстовых или числовых значениях. Также, с помощью галочек можно выбирать те записи, которые будут использоваться при ручной рассылке.
    В нашем случае в качестве поля, по которому осуществляется фильтрация, выступает поле «Рассылка». В качестве критерия используется значение «да» (в нашей таблице это значение появляется, если в текущем месяце срок действия клубной карты подходит к концу).
    Слияние данных MS Word и MS Excel
    7
  5. Теперь нужно приступить к этапу вставки соответствующих полей в подходящие места. Но перед этим не стоит забывать ставить курсор туда, куда нужно. Если же вы забыли, мастер закрывать не придется все равно. В таком случае можно просто перенести поле в то место, которое нужно, уже после вставки поля. В нашем случае курсор был поставлен возле восклицательного знака после части слова «Уважаем». Поскольку нам нужны отдельные поля, то необходимо выбрать пункт «Другие элементы».
    Слияние данных MS Word и MS Excel
    8
  6. После того, как нами было выбрано подходящее поле (в нашем случае это имя), нужно подтвердить свои действия путем нажатия кнопки «Вставить». Аналогичную операцию нужно провернуть и со всеми другими полями. То есть, если нам нужно вставить отчество, то нужно нажать по соответствующему полю в списке и нажать ту же кнопку, чтобы его вставить в документ.
    Слияние данных MS Word и MS Excel
    9


    После этого закрываем окно и добавляем пробелы между вставленными словами. Если перед этим вы выставили опцию «Затенение полей» в положение «Всегда», то надписи будут отображаться на сером фоне. Аналогичные действия нужно проделать и со следующим полем с номером клубной карты.
    Сначала ставится курсор после значка №, после чего открываем «Другие элементы», предварительно выполнив описанные выше действия, после чего выбирается поле с номером клубной карты. Далее осуществляется нажатие по кнопке «Вставить». И то же самое со сроком действия карты. 

  7. Последний этап – вставка окончания слова «Уважаем» в зависимости от того, какого пола человек. Для этого при слиянии используется специальное поле, «Правила». Есть несколько его разновидностей, но нас интересует вид «IF…THEN…ELSE». Найти ее можно на вкладке «Рассылки». Но в старых версиях офисного пакета она также находилась на панели инструментов, как показано на скриншоте.
    Слияние данных MS Word и MS Excel
    10
  8. После этого задаем параметры в появившемся окошке. Сначала выбирается поле, которое используется для проверки на предмет соблюдения определенного условия, после чего выставляется логический оператор (в нашем случае равно), а потом уже значение, на соответствие которому нужно проверять это поле. Затем нужно добавить текст, который нужно вставлять, если значение оказывается правильным и тот, который добавляется в случае возвращения результата «ЛОЖЬ». И после нажатия на кнопку ОК получаем такой текст.
    Слияние данных MS Word и MS Excel
    11

А вот пример заполнения полей, который был в нашем случае.

Слияние данных MS Word и MS Excel

12

На следующем этапе нужно получившиеся в результате слияния документы пересмотреть. Для этого в окне есть кнопки навигации, нажимая которые можно проверить, все ли правильно сделано. Также с помощью специальных флажков можно отобразить лишь некоторых получаете. 

После осуществления этих действий оказывается, что некоторые данные перенеслись неправильно.

Слияние данных MS Word и MS Excel

13
Слияние данных MS Word и MS Excel
14

Были убраны нули в начале номера. Вместо того, чтобы отобразить номер 001768 в результате получилось просто 1768. Та же история и с датами, где месяц число были поменяны местами. Аналогичные проблемы могут случиться с любыми другими форматами: десятичными числами, деньгами и так далее. Просто форматирование, которое было в таблице Эксель, не сохраняется при слиянии. Но решение этой проблемы есть.

Для начала надо понять, что каждая дата, время и так далее имеет свой код, который можно просмотреть и откорректировать. ЧТобы это сделать, нужно кликнуть по соответствующему полю правой кнопкой мыши, после чего нажать на «Коды/Значения полей».

В случае с номером клубной карты результат будет такой.

(MERGEFIELD «M__клубной_карты» }

Мы не будем вносить никаких коррективов в код, обойдемся только добавлением формата.

Если вы хоть чуть-чуть пробовали разные форматы в Эксель, то у вас не должно возникнуть никаких проблем с его добавлением. ЧТобы число сделать шестизначным, то нужно в формате поставить шесть нулей. Получится следующий код. 

{ MERGEFIELD «M__клубной_карты»  #  «000000»  }.

После этого делаем правый клик мышью по соответствующему полю и нажимаем «Обновить поле». После этого проблема должна решиться автоматически. 

Код даты вводится так:

{ MERGEFIELD «дата_окончания_действия_карты»  @  «DD.MM.YYYY»  }

Теперь все правильно.

На финальном этапе осталось только вручную отредактировать некоторые письма, если там возникают ошибки, которые невозможно исправить автоматически. После этого их можно сохранить на компьютере или сразу распечатать.

Объединение таблицы Ворд и Эксель

Давайте представим ситуацию, что нам нужно сделать в вордовском документе таблицу, чтобы часть данных была из Excel. При этом важно сделать так, чтобы после вычислений в Экселе данные в Ворде автоматически обновлялись. 

Чтобы это сделать, нужно сначала сделать таблицу в Эксель, после чего этот диапазон выделить и скопировать.

После этого нужно воспользоваться функцией «Специальная вставка» Word, которую можно найти в меню «Вставка» и там выбирается опция с листом Майкрософт Эксель.

Чтобы связать таблицы, нужно воспользоваться одноименной функцией. 

Слияние текстов Ворда и Эксель

Представим такую задачу: у нас есть Эксель таблица, в которой перечислены люди (их фамилии, имена, отчества), а также их контактные телефоны. Также есть документ Ворд, в котором нужно заполнить пробелы соответствующими именами и номерами телефонов. 

Чтобы это сделать, нужно открыть меню «Сервис – Слияние», потом выбрать источник данных и выбрать пункт «Добавить поле слияния». После этого соответствующие поля вставляются в подходящих местах. После нажатия кнопки «Объединить» действие можно считать выполненным. 

Выводы

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

Как видим, профессиональное владение офисным пакетом включает не только умение создавать электронные таблицы или текстовые документы, но и осуществлять обмен информацией между двумя приложениями. 

Оцените качество статьи. Нам важно ваше мнение:

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

В Microsoft Excel, в основном, используется два типа форматов файлов: «.xlsx» (современный формат) и «.xls» (использовался в версиях Excel 1997-2003). Документы Microsoft Word имеют два основных формата файлов: «.docx» (современный формат) и «.doc» (использовался в версиях Word 1997-2003).

Содержание:

  1. Как таблицу в Экселе перенести в Ворд — 1 способ
  2. Как вставить таблицу Эксель в Ворд — 2 способ
  3. Как вставить Excel в Word — 3 способ
  4. Уменьшение ширины таблицы Excel после вставки в документ Word
  5. Как Excel перевести в Word в программе — 4 способ
  6. Как конвертировать Excel в Word онлайн — 5 способ
  7. Выводы статьи

Между собой форматы «XLSX», «XLS» или «DOCX», «DOC» никак не связаны из-за разной структуры, поэтому напрямую сохранить файл одного формата в другом формате не получится. Нам придется переносить документ Excel в Word вручную или воспользоваться помощью программ или онлайн сервисов для конвертации файлов.

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

Как таблицу в Экселе перенести в Ворд — 1 способ

Сначала рассмотрим самый простой способ, как перенести таблицу из Excel в Word вручную: простым копированием содержимого файла. При этом способе мы скопируем содержимое листа Excel, а затем вставим его в документ Word.

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

  1. Откройте книгу Excel.
  2. На открытом листе Excel выделите диапазон содержимого, который нужно перенести в документ Ворд.
  3. Щелкните правой кнопкой мыши внутри выделенной таблицы, в контекстном меню выберите «Копировать». Другой вариант для копирования: нажмите на клавиши «Ctrl» + «C».

копировать excel

  1. Откройте документ Word.
  2. Щелкните правой кнопкой мыши внутри документа, в контекстном меню в пункте «Параметры вставки:» выберите вариант: «Сохранить исходное форматирование». Другой способ для вставки: кликните мышью в открытом документа Word, а затем нажмите на клавиши «Ctrl» + «V».

вставка в word

При выборе варианта вставки в Word, можно использовать другие способы сохранения таблицы:

  • Использовать стили конечного фрагмента — используется стиль таблицы Word.
  • Связать и сохранить исходное форматирование — таблица Excel будет связана с документом Word, при изменении данных в исходной таблице Эксель, спросят ваше согласие на изменение связанного содержимого в таблице Ворд.
  • Связать и использовать конечные стили — таблица Excel и документ Word будут связаны, при изменении в таблице Excel поменяется содержимое таблицы в Word, будет использован стиль таблицы Word.
  • Рисунок — таблица вставится в документ в качестве изображения.
  • Сохранить только текст — после копирования каждая строка будет находится в отдельном абзаце, а столбцы разделены пробелами.

При наведении курсора мыши к одному из возможных вариантов вставки, на странице отобразится стиль вставляемой таблицы. Вы можете выбрать самый подходящий вариант.

параметры вставки

При использовании данного способа мы сможем отредактировать скопированную таблицу в Word. Можно изменить содержимое таблицы: изменить данные, форматирование, ширину и высоту, шрифт и т. д.

Из минусов этого способа можно отметить то, что если данные на листе Excel занимают больше места, чем на листе Word, то вся таблица не поместится по ширине (особенно это станет заметно при представлении «Разметка страницы»).

Как вставить таблицу Эксель в Ворд — 2 способ

В этом способе мы вставим содержимое таблицы Excel в документ Word, в котором отрыта пустая таблица Excel.

Пройдите следующие шаги:

  1. В окне программы MS Word войдите во вкладку «Вставка», в группе «Таблицы» нажмите на стрелку внизу кнопки «Таблица».
  2. В меню «Вставка таблицы» выберите «Таблица Excel».

таблица excel

  1. В окне документа Word откроется пустая таблица Excel.

таблица excel вставлена

  1. Откройте книгу MS Excel.
  2. Выделите содержимое таблицы на листе Excel.
  3. В меню «Главная» кликните на значок «Копировать», который находится в группе «Буфер обмена».

копировать

  1. В окне программы Word нажмите на кнопку «Вставить».
  2. Таблица Excel открыта в окне программы Word.

таблица excel вставлена в word

Если таблица не помещается по ширине документа, то можно уменьшить ширину. Для просмотра невидимых областей таблицы используйте колесики прокрутки.

прокрутка таблицы

После изменения данных, сохраните документ Word на компьютере. В сохраненном документе форматирование таблицы будет в стиле Word.

Как вставить Excel в Word — 3 способ

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

Проделайте следующие действия:

  1. В окне программы Excel выделите таблицу.

выделение таблицы

  1. В меню «Главная», в группе «Буфер обмена» нажмите на треугольничек на кнопке «Копировать».
  2. В открывшемся меню выберите пункт «Копировать как рисунок…».

копировать как рисунок

  1. В окне «Копировать как рисунок» нужно выбрать параметры копирования изображения.

параметры копирования

  1. Откройте страницу документа Word в меню «Главная», а затем нажмите на кнопку «Вставить», находящуюся в группе «Буфер обмена».

таблица в word

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

Уменьшение ширины таблицы Excel после вставки в документ Word

Часто бывает, что таблица не помещается по ширине листа документа Word. Если ширина таблицы не очень большая, то таблицу можно слегка модифицировать:

  1. Выделите вставленную таблицу Excel в документе Word.
  2. Откройте меню «Макет».
  3. В группе «Размер ячейки» нажмите на кнопку «Автоподбор», выберите пункт «Автоподбор по содержимому».

автоподбор

Таблица уменьшилась до требуемого размера и поместилась на странице документа.

таблица уменьшина

Как Excel перевести в Word в программе — 4 способ

Сейчас я расскажу, как вставит таблицу из Excel в Word с помощью программы ABBYY FineReader. Программа ABBYY FineReader предназначена для оптического распознавания символов, приложение переводит изображения документов или PDF файлы в редактируемые форматы.

ABBYY FineReader — платная программа на русском языке от российского разработчика. Компания ABBYY — один из мировых лидеров в своей нише программного обеспечения.

Для конвертирования файла из формата Excel в формат Word, необходимо сделать следующее:

  1. Запустите программу ABBYY FineReader на компьютере.
  2. В окне программы в разделе «Просмотр и редактирование PDF-документов» нажмите на кнопку «Открыть PDF-документ» (да-да, именно так).

открыть pdf

  1. В окне Проводника на нижней панели вместо «PDF-файлы» выберите «Все файлы».
  2. Выберите на ПК документ Excel, нажмите на кнопку «Открыть».
  3. Программа выполнит распознавание файла, а затем откроет его содержимое в окне «Новый — ABBYY FineReader».

файл распознан

  1. Нажмите на стрелку кнопки «Сохранить копию документа», а контекстном меню выберите «Документ Microsoft Word».

сохранить в word

  1. В окне Проводника присвойте имя новому документу, нажмите на кнопку «Сохранить».
  2. После выполнения конвертирования, на Рабочем столе откроется окно программы Word со вставленной таблицей из книги Excel.

файл конвертирован

Таблицу после конвертирования в документ Ворд можно редактировать.

Как конвертировать Excel в Word онлайн — 5 способ

Сейчас мы разберемся, как таблицу из Excel перебросить в Word с помощью онлайн сервиса. Мы воспользуемся услугами бесплатного онлайн сервиса CoolUtils.com, на котором можно конвертировать файлы различных форматов между собой.

Преобразование Excel в Word онлайн проходит в следующем порядке:

  1. Войдите на страницу сервиса CoolUtils.com для загрузки на онлайн сервис файла Excel.
  2. Нажмите на кнопку «Browse» для выбора файла на своем компьютере. Эта кнопка станет активной после включения в браузере Adobe Flash Player.
  3. В пункте «Настройте опции», в настройке «Конвертировать в» выберите формат «Doc».
  4. В пункте «Получить файл» нажмите на кнопку «Скачать конвертированный файл».

скачать конвертированный файл

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

таблица открыта в word

Если нужно, отредактируйте файл, а затем сохраните его в формате Word.

Выводы статьи

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

Похожие публикации:

  • Как в Excel снять защиту листа не зная пароль — 2 способа
  • Как сделать рамку для оформления текста в Word
  • Как сделать нумерацию страниц в Word
  • Как удалить нумерацию в Word
  • Как убрать водяные знаки в Word — 2 способа

Вдруг кому пригодится…

Сделал программу для заполнения документов данными из таблицы Excel (из Excel в Word)

———————
Надстройка предназначена для формирования (подготовки) документов по шаблонам, с заполнением созданных файлов данными из текущей книги Excel.

В качестве шаблонов могут выступать следующие типы файлов:
— документы Word (расширения DOC, DOCX, DOCM)
— шаблоны Word (расширения DOT, DOTX, DOTM)
— книги Excel (расширения XLS, XLSX, XLSM, XLSB)
— шаблоны Excel (расширения XLT, XLTX, XLTM)
— текстовые документы (расширения TXT, DAT, XML и т.д.)

В качестве исходных данных для заполнения, используется открытый в Excel файл (с таблицей, содержащей строку заголовка)

Количество шаблонов документов не ограничено
———————————
В каких случаях вам может пригодиться эта надстройка:

— если у вас в таблице Excel хранится список контрагентов (с их реквизитами), и вы хотите нажатием одной кнопки формировать договоры, акты или коммерческие предложения для каждого из них

— если в вашей таблице Excel хранятся паспортные данные сотрудников, и вам необходимо быстро сформировать по шаблону приказы или прочие документы в формате Word, заполнив созданные документы данными сотрудников

— подготовить письма, уведомления, грамоты в формате PDF или Word, заполнив созданные файлы информацией с листа Excel

— и т.д. и т.п. — надстройку можно применять для создания любых документов на основе данных из Excel
———————————

Скачать надстройку можно здесь:
http://excelvba.ru/programmes/FillDocuments

Понравилась статья? Поделить с друзьями:

А вот еще интересные статьи:

  • Excel соединить ячейки в столбце
  • Excel соединить текстовые значения
  • Excel соединить строки через запятую
  • Excel соединить строки формула
  • Excel соединить строки в ячейках

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии