sincere658 Пользователь Сообщений: 9 |
Всем привет. Ребята, помогите с переносом данных по каждой строке из Excel в типовую форму Word. Изменено: sincere658 — 06.04.2016 12:06:58 |
Jack_Famous Пользователь Сообщений: 10852 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
sincere658 Пользователь Сообщений: 9 |
Спасибо, но там не совсем то, мне нужно чтобы данные в ворд выгружались |
jfd Пользователь Сообщений: 302 |
если я не ошибаюсь, есть стандартный функционал для такого рода действий — называется слияние |
в ворде есть функция СЛИЯНИЕ — стандартная функция, как раз для Вашего случая. Берет по строке из Екселя, вводит данные, а там где Вы метки поставите будет менять ФИО, и все что пометите. |
|
Z Пользователь Сообщений: 6111 Win 10, MSO 2013 SP1 |
#7 06.04.2016 15:51:09
Зачем?! Храните данные в XL, форму — в Ворде. Слияние — по надобности: можно для персональных писем, для электронной рассылки и пр.пр. Оно вам надо, например, хранить полторы тысячи текстовых файлов, которые один раз только фспользовались?.. «Ctrl+S» — достойное завершение ваших гениальных мыслей!.. |
||
sincere658 Пользователь Сообщений: 9 |
#8 06.04.2016 15:59:24
Всё, ребята, разобрался. Спасибо за ответы! Можно закрывать тему. На самом деле даже неудобно, что потратил ваше время из-за такой ерунды. А я уже подумал придется лезть в изучение VBA |
||
Юрий М Модератор Сообщений: 60585 Контакты см. в профиле |
#9 06.04.2016 18:36:42
Не помешает ) |
||
E.v.g |
||||||
1 |
||||||
25.08.2010, 22:37. Показов 35768. Ответов 17 Метки нет (Все метки)
Добрый день, помогите пожалуйста довести до ума макрос , который бы экспортировал определенные данные из таблицы в виде таблицы
Единственное что, сейчас копируются выделенные ячейки только первого столбца, подскажите пожалуйста как можно расширить этот диапазон и как сделать так, чтобы заголовки таблицы и данные из таблицы брались не из всего диапазона таблицы, а выборочно (например ячейкa 3 столбца A, столбца C, диапазона E:G и т.д) и выводились в Word. Вложения
|
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
25.08.2010, 22:37 |
17 |
Заблокирован |
||||
28.08.2010, 06:24 |
2 |
|||
E.v.g,
1 |
E.v.g |
|
28.08.2010, 12:26 |
3 |
Добрый день Busine2009, спасибо за ответ. В таком случае он копирует строку подряд, |
Tinoo -1 / 0 / 0 Регистрация: 09.03.2011 Сообщений: 75 |
||||
20.06.2011, 15:05 |
4 |
|||
Вот код, который увеличивает диапазон, по другому вопросу ответа не знаю.
0 |
Makarona 1 / 1 / 0 Регистрация: 27.07.2011 Сообщений: 37 |
||||
26.08.2011, 16:35 |
5 |
|||
Добрый день! на разных сайтах нашла варианты решений, понравился один, подогнала под себя а выдаёт ошибку. Вот кусок. Подсткажите, плиз, чтож я делаю неправильно
Ругается на .Item(«Первая_таблица»).Range.InsertAfter exlR пишет Type MisMatch Заранее спасибо за помощь. Надеюсь подскажете, а то ручками вставлять и связывать таблиц 35 в каждый документ регулярно…. ну очень нудно и долго
0 |
Заблокирован |
|
26.08.2011, 17:47 |
6 |
Makarona,
0 |
Makarona 1 / 1 / 0 Регистрация: 27.07.2011 Сообщений: 37 |
||||
26.08.2011, 17:56 |
7 |
|||
Busine2009,
Я нечто подобное пробовала, но он опять выдаёт ту же ошибку на той же строке.
0 |
Заблокирован |
|
26.08.2011, 17:59 |
8 |
Здесь после Range поставьте точку и выберите что-нибудь связанное с Paste:
.Item(«Первая_таблица»).Range.InsertAfter Selection Здесь сразу можно копировать (выделять не надо перед копированием):
exlR.Select Чтобы вставить после закладки, то нужно по-другому написать. Если надо, то напишу.
0 |
1 / 1 / 0 Регистрация: 27.07.2011 Сообщений: 37 |
|
26.08.2011, 18:02 |
9 |
Busine2009,
0 |
Заблокирован |
||||
26.08.2011, 18:04 |
10 |
|||
Код, на котором я тестировал:
1 |
1 / 1 / 0 Регистрация: 27.07.2011 Сообщений: 37 |
|
29.08.2011, 09:57 |
11 |
Busine2009, Добавлено через 14 минут Убрала строку и всё стало ок)
0 |
Заблокирован |
|
29.08.2011, 10:07 |
12 |
Документ.Bookmarks.Add Name:=»Bookmark1″, Range:=Документ.Range(0, 0) это ж вставка закладки в документ, а у вас уже все закладки вставлены.
0 |
1 / 1 / 0 Регистрация: 27.07.2011 Сообщений: 37 |
|
29.08.2011, 11:22 |
13 |
Busine2009, да, сначала вставила всё тупо, потом код прочитала. С утра туго соображаю… Добавлено через 1 час 11 минут
0 |
Заблокирован |
|
29.08.2011, 11:42 |
14 |
Как вставить эти таблицы связанными? есть 2 варианта связанных таблиц:
Если вставить в виде рисунка, то таблица не будет переходить на следующую страницу, если она больше страницы.
0 |
1 / 1 / 0 Регистрация: 27.07.2011 Сообщений: 37 |
|
29.08.2011, 11:47 |
15 |
Busine2009,
0 |
Заблокирован |
||||
29.08.2011, 12:31 |
16 |
|||
РешениеКод:
Если не знаете, что написать в коде, то используйте макрорекордер: В вашем случае надо было записать макрос в Word:
3 |
1 / 1 / 0 Регистрация: 27.07.2011 Сообщений: 37 |
|
29.08.2011, 14:11 |
17 |
Вау! а то программиста нашего не допросишься помочь. Легче самой написать… Добавлено через 1 час 5 минут
‘RTF:=True — таблица будет использовать RTF, а не HTML (этого сам не понимаю). Если поставить False, то остаётся форматирование Excel (если ячейки объединены, например), а если True, то все объединения ячеек сбиваются и таблица плывёт (особенно заголовки)
0 |
Makarona 1 / 1 / 0 Регистрация: 27.07.2011 Сообщений: 37 |
||||||||||||
08.11.2011, 14:10 |
18 |
|||||||||||
С таблицами более-менее понятно, а вот что делать с вставкой диаграмм так же из Excel в Word по закладкам? бъюсь над этим, но не могу поянть свою ошибку. Диаграмма вставляется, но в левыё верхний угол, а не по закладке. кусочек кода:
пробовала так:
не получилось Помогите, плиз, скажите, в каком месте я — балда что-то не правильно пишу Добавлено через 2 часа 43 минуты
0 |
Skip to content
Как из Word перевести в Excel
На чтение 4 мин. Просмотров 7k.
Что делает макрос: Если вы обнаружите, что вы постоянно копируете данные и вставляете в Microsoft Word, вы можете использовать макрос, чтобы автоматизировать эту задачу.
Содержание
- Как макрос работает
- Код макроса
- Как этот код работает
- Как использовать
Как макрос работает
Перед тем как использовать макрос, очень важно к этому подготовиться. Чтобы подготовиться к процессу, вы должны иметь созданный шаблон Word . В этом документе, указать закладку, где вы хотите, чтобы ваши данные из Excel разместились.
Чтобы создать закладку в документе Word, поместите курсор в нужное место, выберите вкладку Вставка — Закладка. Это активизирует диалоговое окно Закладка, где вы назначаете имя
для закладки. После того, как назначено имя, нажмите кнопку Добавить.
Один из файлов образцов для этой части является документ под названием PasteTable.docx. Это документ представляет собой простой шаблон, который содержит одну закладку под названием DataTableHere. В этом примере кода вы скопируете диапазон к этому
шаблону PasteTable.docx, используя закладку DataTableHere, чтобы указать, где вставить скопированный диапазон.
Кроме того, необходимо установить ссылку на библиотеку объектов Microsoft Word.
Код макроса
Sub OtpravitDannieIzExcelVWord() 'Шаг 1: Объявляем переменные Dim MyRange As Excel.Range Dim wd As Word.Application Dim wdDoc As Word.Document Dim WdRange As Word.Range 'Шаг 2: Скопируйте определенный диапазон Sheets("таблица доходов").Range("B4:F10").Copy 'Шаг 3: Откройте целевой документ Word Set wd = New Word.Application Set wdDoc = wd.Documents.Open _ (ThisWorkbook.Path & "" & "PasteTable.docx") wd.Visible = True 'Шаг 4: Установить фокус на целевую закладку Set WdRange = wdDoc.Bookmarks("DataTableHere").Range 'Шаг 5: Удалить старую таблицу и вставить новую On Error Resume Next WdRange.Tables(1).Delete WdRange.Paste 'вставить в таблицу 'Шаг 6: Отрегулируйте ширину столбца WdRange.Tables(1).Columns.SetWidth _ (MyRange.Width / MyRange.Columns.Count), wdAdjustSameWidth 'Шаг 7: Вставьте закладку wdDoc.Bookmarks.Add "DataTableHere", WdRange 'Шаг 8: Очистка памяти Set wd = Nothing Set wdDoc = Nothing Set WdRange = Nothing End Sub
Как этот код работает
- Шаг 1 объявляет четыре переменные: MyRange содержит целевой диапазон Excel; WD является переменной, которая предоставляет объект Application Word; wdDoc является переменной объекта, которая выставляет объект Word Document; wdRange является переменной объекта, которая выставляет объект Range Word.
- Шаг 2 копирует диапазон таблицы рабочего листа. В этом примере, диапазон жёсткий, но мы всегда можем сделать этот выбор в нечто более переменное.
- Шаг 3 открывает существующий целевой документ Word, который служит в качестве шаблона. Обратите внимание, что мы устанавливаем свойство Visible приложения Word, в True.
Это гарантирует, что мы можем увидеть действие в Word, как работает код. - Шаг 4 использует объект Range в Word, чтобы установить фокус на целевой закладке. Это по существу выбирает закладку в виде диапазона, что позволяет принимать меры в этом диапазоне.
- Шаг 5 удаляет любую таблицу, которая может существовать внутри закладки, а затем вставляет скопированный диапазон Excel. Если мы не будем удалять любые существующие таблицы, скопированный диапазон добавится к существующим данным.
- Когда вы копируете диапазон Excel в документ Word, ширина столбцов не всегда соответствуют содержанию в клетках. Шаг 6 устраняет эту проблему путем регулировки ширины столбцов. Здесь, ширина каждого столбца установлена как число, которое равно общей ширине таблицы, разделенной на число столбцов в таблице.
- Когда мы копируем диапазон Excel для целевой закладки, мы, по существу, перезаписываем закладку. Шаг 7 воссоздает закладку, чтобы гарантировать, что в следующий раз, когда вы запустите этот код, закладка будет.
- Очистка памяти
Как использовать
Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:
- Активируйте редактор Visual Basic, нажав ALT + F11.
- Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
- Выберите Insert➜Module.
- Введите или вставьте код.
- Документы 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 доступна для бесплатного скачивания.
Внимание: просьбы о доработке макроса, описанного в этой статье, не принимаются.
Есть новая (универсальная) версия, — в которой уже есть практически всё, что может понадобиться.
- 197090 просмотров
Не получается применить макрос? Не удаётся изменить код под свои нужды?
Оформите заказ у нас на сайте, не забыв прикрепить примеры файлов, и описать, что и как должно работать.
Вставка таблицы Excel в документ Word с помощью кода VBA Excel. Метод Selection.PasteExcelTable: синтаксис, параметры, пример использования.
Работа с Word из кода VBA Excel
Часть 6. Вставка таблицы Excel в документ Word
[Часть 1] [Часть 2] [Часть 3] [Часть 4] [Часть 5] [Часть 6]
Метод Selection.PasteExcelTable
Метод Range.Paste, использующийся в VBA Word для вставки в документ таблиц, скопированных в буфер обмена из другого документа Word, не применим для вставки в документ таблиц, скопированных из книги Excel. Для этих целей используется метод Selection.PasteExcelTable.
Selection.PasteExcelTable — это метод, предназначенный для вставки Excel-таблицы из буфера обмена в документ Word и ее форматирования в соответствии с заданными параметрами.
Синтаксис
Expression.PasteExcelTable(LinkedToExcel, WordFormatting, RTF) |
Expression — переменная, представляющая объект Selection. В том числе, это может быть курсор или закладка.
Параметры
Все параметры метода Selection.PasteExcelTable логического типа и являются обязательными.
Параметр | Описание |
---|---|
LinkedToExcel | True — вставленная таблица связывается с исходным файлом Excel, чтобы изменения, внесенные в файл Excel, отображались в Microsoft Word. False — связь между вставленной таблицей и таблицей в исходном файле не устанавливается. |
WordFormatting | True — вставленная таблица будет отформатирована как таблица документа Word. False — вставленная таблица будет отформатирована в соответствии с исходным файлом Excel. |
RTF | True — Excel-таблица будет вставлена в расширенном текстовом формате (RTF). False — Excel-таблица будет вставлена в формате HTML-таблицы. |
Допустим, у нас есть таблица Excel, начинающаяся с ячейки A1 (или с любой другой), и нам необходимо скопировать эту таблицу в существующий документ Word, вставив ее на место закладки «Закладка1».
Решение:
Sub Primer() Dim myWord As New Word.Application, myDoc As Word.Document ‘Открываем существующий документ Word Set myDoc = myWord.Documents.Open(«C:ТестоваяДокумент1.docx») ‘Копируем таблицу на активном листе в буфер обмена ‘Вместо ячейки Range(«A1») можно указать любую другую, расположенную внутри таблицы Range(«A1»).CurrentRegion.Copy ‘Вставляем таблицу из буфера обмена на место закладки myDoc.Bookmarks(«Закладка1»).Range.PasteExcelTable False, False, False ‘Отображаем программу Word myWord.Visible = True ‘Очищаем переменные Set myWord = Nothing Set myDoc = Nothing End Sub |
Если необходимо таблицу вставить в конец документа, строку
myDoc.Bookmarks(«Закладка1»).Range.PasteExcelTable False, False, False |
следует заменить на
With myDoc ‘Переводим курсор в конец документа .Range(.Range.Characters.Count — 1, .Range.Characters.Count — 1).Select ‘Добавляем перенос строки, если необходимо .ActiveWindow.Selection.InsertAfter vbCr ‘Переводим курсор в конец документа .Range(.Range.Characters.Count — 1, .Range.Characters.Count — 1).Select ‘Вставляем таблицу из буфера обмена .ActiveWindow.Selection.PasteExcelTable False, False, False End With |