Макрос для переноса данных из excel в word

Обновлено: 05.07.2024

Как — смотрите вопрос (внизу этой страницы) от "неправильно понятой" девушки по имени Aleksandra.

В какой версии лучше — да по большому счёту всё равно.

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

А пока «пристрелочный» вариант. Все таблицы открытого документа он преобразует в табулированный (разбитый символами табуляции) текст.

Последний раз редактировалось Sasha_Smirnov; 27.01.2009 в 04:12 . Причина: вопрос — а вообще как часто Вы сталкиваетесь с этой задачей? или это так, для общего развития?
автоматический перенос данных с таблиц Excel в текст Word

Сложного ничего нет. Прикрепите файл с таблицей Excel - тогда и макрос напишем.
Можно прикрепить и пример того, что должно получиться после вставки в Word.

Если известно, какой диапазон ячеек является таблицей (например, [a2:g35]), то макрос для переноса займёт 3 строки.

Кстати, тема неоднократно обсуждалась на форуме.

В любой. По крайней мере, в Office XP, 2003, 2007 это будет работать.

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

  • документы Word (расширения DOC, DOCX, DOCM)
  • шаблоны Word (расширения DOT, DOTX, DOTM)
  • книги Excel (расширения XLS, XLSX, XLSM, XLSB)
  • шаблоны Excel (расширения XLT, XLTX, XLTM)
  • текстовые документы (расширения TXT, DAT, XML и т.д.)

Количество шаблонов документов не ограничено

  • если у вас в таблице Excel хранится список контрагентов (с их реквизитами), и вы хотите нажатием одной кнопки формировать договоры, акты или коммерческие предложения для каждого из них
  • если в вашей таблице Excel хранятся паспортные данные сотрудников, и вам необходимо быстро сформировать по шаблону приказы или прочие документы в формате Word, заполнив созданные документы данными сотрудников
  • подготовить письма, уведомления, грамоты в формате PDF или Word, заполнив созданные файлы информацией с листа Excel
  • и т.д. и т.п. - надстройку можно применять для создания любых документов на основе данных из Excel
Последний раз редактировалось EducatedFool; 28.03.2012 в 10:14 . Да это работало ещё в Windows 95 и 98.
И вообще офисные программы (Excel и Word) хорошо стыкуются. Последний раз редактировалось Sasha_Smirnov; 28.01.2009 в 02:05 . Есть документ excel в нем 9 столбиков, и 300 строк, №,фамилия, имя, отчество,серия паспорта, номер паспорта, кем выдан паспорт, дата выдачи паспорта,и идентификационный номер.
И есть документ word, с договором, нужно чтобы как то нажатием пару клавиш, переносить строчки из excel в определенные строчки в договоре.
Если можно по подробней, что нажать, куда вставить, я новичок в этом.
Спасибо.

Пролистайте эту страницу вниз - увидите список похожих тем.
В них Вы, скорее всего, найдёте ответ на свой вопрос.

Поиском по форуму сможете найти ещё множество подобных тем, где уже не раз обсуждался этот вопрос.

Sub CreateDocs()
Dim WA As New Word.Application
Dim WD As Word.Document, ra As Word.Range
Set WD = WA.Documents.Add(ThisWorkbook.Path & Application.PathSeparator & "шаблон.dot")
With WA.Selection
.HomeKey Unit:=wdStory: .EndKey Unit:=wdStory, Extend:=wdExtend
.Copy
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
.Paste
.EndKey Unit:=wdStory: .HomeKey Unit:=wdStory, Extend:=wdExtend
.Find.Execute "", False, , , , , , , , Cells(i, 1), True
.EndKey Unit:=wdStory, Extend:=wdExtend
.Find.Execute "", False, , , , , , , , Cells(i, 2), True
.EndKey Unit:=wdStory, Extend:=wdExtend
.Find.Execute "", False, , , , , , , , Cells(i, 3), True
.EndKey Unit:=wdStory, Extend:=wdExtend
.Find.Execute "", False, , , , , , , , Cells(i, 4), True
.EndKey Unit:=wdStory, Extend:=wdExtend
.Find.Execute "", False, , , , , , , , Cells(i, 5), True
.EndKey Unit:=wdStory, Extend:=wdExtend
.Find.Execute "", False, , , , , , , , Cells(i, 6), True
.EndKey Unit:=wdStory, Extend:=wdExtend
.Find.Execute "", False, , , , , , , , Cells(i, 7), True
.EndKey Unit:=wdStory, Extend:=wdExtend
.Find.Execute "", False, , , , , , , , Cells(i, 8), True
.EndKey Unit:=wdStory
Next i
End With
WD.SaveAs ThisWorkbook.Path & Application.PathSeparator & "договора.doc"
WD.Close False: WA.Quit False
End Sub

Проблема в том что данные в шаблоне word повторяются два раза, и фамилия,имя,отчество три раза, в верху и внизу документа. Этот код вставляет все по очереди,получается в верху договора одна фамилия а внизу другая, по списку следующая в таблице excel? а нужно чтобы каждая строка из excel повторялась два раза.
И еще, как сделать чтобы все сохранялось в отдельных файлах, (название файла, например по фамилии) а не все в одном.
Спасибо.

АВТОМАТИЗАЦИЯ ЗАПОЛНЕНИЯ ДОКУМЕНТОВ, ЧАСТЬ 4: ПЕРЕНОС ДАННЫХ В WORD

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

Описание механизма

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

Создание шаблона документа Word

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

  • Для удобства поддержки напечатать в нужном месте название закладки. Я еще и заключил названия в угловые скобки, так что получилось, например, вот так: <DocumentDate> для закладки, содержащей дату документа.
  • Выделить все название закладки (в моем случае вместе с угловыми скобками), перейти на вкладку "Вставка" и нажать кнопку "Закладка":

Расположение кнопки "Вставить закладку"

Таким образом нужно будет создать все закладки, то есть отметить все места, куда будут вставлены данные из Excel. Получившийся файл нужно сохранить как "Шаблон MS Word" с помощью пункта меню "Файл" -> "Сохранить как. ".

Подготовка данных Excel

Я решил для удобства поместить все данные, которые необходимо перенести в документ Word, на отдельном рабочем листе с названием Bookmarks - закладки. На этом листе два столбца: в первом содержатся названия закладок (в точности так, как они названы в документе Word), а во втором - соответствующие значения, подлежащие переносу.

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

На этом этапе важно правильно указать все названия закладок - от этого зависит правильность переноса данных.

Процедура переноса

А вот это - самое интересное. Существует два варианта выполнения кода переноса данных:

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

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

  • Создать шаблон документа Word с поддержкой макросов. В этом шаблоне будет содержаться выполняемый код на VBA.

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

Текст процедуры я приводить в статье не буду - его можно легко посмотреть в файле FillDocument.dotm , расположенном в папке Template в архиве с примером.

Как же воспользоваться всем этим для решения именно Вашей задачи?

Понимаю, что на словах это все выглядит очень просто, но что же получается на деле? Я предлагаю Вам просто воспользоваться уже готовым вариантом. Скачайте архив с примером, в рабочей книге Excel нажмите комбинацию клавиш Alt+F11, чтобы открыть редактор Visual Basic и прочитайте все мои комментарии к программе. Для того, чтобы изменить программу под свои нужды Вам понадобится всего лишь изменить значение нескольких констант, они вынесены в самое начало программы. Весь текст программы Вы можете свободно скопировать в свой проект.

Структура архива

В архиве, приложенном к этой статье, содержится несколько файлов.

Основной файл - рабочая книга Excel с названием "Создание подтверждений". В этой рабочей книге 4 рабочих листа, из которых отображаются только два: "Input" - лист ввода данных и "Database" - архив всех введенных документов.

В папке Templates находятся шаблоны документов Word. Один из них - шаблон, содержащий программу заполнения закладок, а второй - форма для заполнения. Вы можете использовать без изменений шаблон с программой, но форму для заполнения, естественно, придется переделать в соответствии с Вашими нуждами.

Как переработать пример "под себя"?

Я рекомендую придерживаться следующей последовательности действий:

  1. Подготовить шаблон документа Word, который необходимо заполнить. Создать в нем все необходимые закладки и сохранить как "шаблон MS Word".
  2. Скопировать в папку с подготовленным шаблоном файл FillDocument.dotm из архива, приложенного к этой статье. Этот файл отвечает за заполнение закладок шаблона, и в нем ничего менять не нужно.
  3. Подготовить рабочую книгу Excel для ввода данных. Вам решать, будет ли она обладать каким-либо "продвинутым" пользовательским интерфейсом и осуществлять разные хитрые расчеты. Главное, чтобы в ней содержался рабочий лист с таблицей соответствия имени закладки в шаблоне Word и значения, которое нужно подставить.
  4. Вставить в подготовленную рабочую книгу код программы на VBA из файла-примера. Заменить все константы в соответствии с Вашим проектом.
  5. Протестировать правильность работы.
  6. Активно пользоваться!

Вместо заключения

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

Другие статьи из цикла:

По этой ссылке Вы перейдете на сайт Microsoft SkyDrive, где Вам будет предложено скачать файл Confirm.rar - это и есть архив приложения.

0 коммент.:

Реклама

Архив блога

Ярлыки

Recent

Popular Posts

В предыдущих статьях цикла "Автоматизация заполнения документов" я рассказал о том, как сформировать пользовательский интерфе.

Хотите свободно говорить на английском? Есть вещи, которые нужно выучить назубок! Основные неправильные глаголы английского языка: .

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

Как перенести лист из книги Excel в документ Word?

Для переноса в документ Word данных всего рабочего листа рабочей книги Excel, необходимо перейти на вкладку «Вставка» и в группе кнопок «Текст» нажать кнопку «Объект». На вкладке "Создание из файла" диалогового окна «Вставка объекта»,

perenesti list excel v dokument word kak obekt

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

Если в диалоговом окне «Вставка объекта» установить флажок в поле «Связь с файлом», то в документе Word будут отображаться в автоматическом режиме изменения, внесенные в исходный файл.

Как перенести таблицу или диапазон ячеек из Excel в Word?

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

kak perenesti tablicu iz excel v word

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

Как перенести данные из Excel в Word без ячеек?

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

Как перенести несколько таблиц из Excel в Word?

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

kak vstavit izobrazheniya i tablicy v dokumenty word

Как выборочно перенести данные из Excel в Word (автоматически)?

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

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

Zapolnenie tablicy word dannymi rabochej knigi excel

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

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

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

Как перенести отдельные значения из Excel в Word?

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

Надстройка для Word

Zapolnenie dokumentov word dannymi iz excel

Надстройка для Excel

zapolnenie dokumentov word dannymi iz excel

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

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

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

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

Подготовил маленький пример, дабы было понятно о чем речь
В Excel что было и в Word что должно стать, таблицы более массивные, но это для примера. Govard88

Подготовил маленький пример, дабы было понятно о чем речь
В Excel что было и в Word что должно стать, таблицы более массивные, но это для примера. Автор - Govard88
Дата добавления - 04.12.2015 в 16:48

[/vba]
Если не сработает - подключите библиотеку microsoft.word в vba

если нужна вставка как таблицы - то wdPasteOLEObject
- вставка как картинки wdPasteMetafilePicture

[/vba]
Если не сработает - подключите библиотеку microsoft.word в vba

если нужна вставка как таблицы - то wdPasteOLEObject
- вставка как картинки wdPasteMetafilePicture SLAVICK

Иногда все проще чем кажется с первого взгляда.

[/vba]
Если не сработает - подключите библиотеку microsoft.word в vba

если нужна вставка как таблицы - то wdPasteOLEObject
- вставка как картинки wdPasteMetafilePicture Автор - SLAVICK
Дата добавления - 04.12.2015 в 18:03

SLAVICK, Спасибо большое, все работает
А библиотеки не было, всегда считал, что VBA в офисе работает без доп.настроек между своими приложениями. SLAVICK, Спасибо большое, все работает
А библиотеки не было, всегда считал, что VBA в офисе работает без доп.настроек между своими приложениями. Govard88

SLAVICK, буду вам благодарна если подскажите как создать макрос, который переводит данные построчно записи excel в новый созданный файл word. Каждой строке соответствует свой файл. То есть передать данные строки таблицы, а не всей таблицы excel в определенной форме в файле word.

Я пыталась сделать что-то такое на оснвое вашего кода. Сама программирую на с++. Если найдете время, буду очень вам благодарна.

SLAVICK, буду вам благодарна если подскажите как создать макрос, который переводит данные построчно записи excel в новый созданный файл word. Каждой строке соответствует свой файл. То есть передать данные строки таблицы, а не всей таблицы excel в определенной форме в файле word.

Я пыталась сделать что-то такое на оснвое вашего кода. Сама программирую на с++. Если найдете время, буду очень вам благодарна. Dana0856

Я пыталась сделать что-то такое на оснвое вашего кода. Сама программирую на с++. Если найдете время, буду очень вам благодарна. Автор - Dana0856
Дата добавления - 09.07.2019 в 14:57

Читайте также: