Добрый день, уважаемые читатели и подписчики блога! Сегодня речь пойдёт о слиянии документов Word и Excel.
Задача: используя «базу» контактов магазинов из книги Excel загрузить в договор, составленный в программе Word.
Имеем:
Также есть пустой документ Word. В него нужно подставить данные.
Воспользуемся встроенной функцией «Слияние» доступной в пакете Microsoft Office.
Суть функции слияния — из файла Excel берутся заголовки, по ним будут расставляться поля для заполнения в документе Word. Данные будут автоматически подставляться вслед за изменением режима просмотра.
Данные в заголовках обязательно должны быть уникальными!
У способа есть много минусов (в сравнении с макросами), но для повседневного и быстрого использования вполне сгодится.
Приступим:
- создадим пустой документ;
- перейдём на вкладку «Рассылки»;
- в блоке кнопок «Начало слияния» нажимаем кнопку «Начать слияние»;
- выбираем пункт «Обычный документ Word».
Поначалу ничего не изменится, ведь теперь стоит указать — откуда получить информацию. В том же блоке кнопок нажмём кнопку «Выбор получателей» и выберем пункт «Использовать существующий список».
Далее появится окно выбора файла источника. Укажем путь до файла с данными по магазинам. Щёлкнуть на файл и нажать «Открыть».
В появившемся окне необходимо подтвердить источник (откуда будут загружаться данные), на примере это будет Лист1. Обязательно должна стоять галка «Первая строка содержит заголовки столбцов».
Нажимаем «ОК» и… ничего не меняется. Кроме одно детали — становятся активными действия в блоке кнопок «Составление документа и вставка полей. Он-то нам и нужен.
Откинем первые три кнопки — в нашем случае они не понадобятся и напечатаем небольшой текст, где будут упомянуты заголовки данных из книги Excel. Это позволит в дальнейшем добавить «Поля слияния».
Сделаем так, чтобы наши данные «подтянулись» в документ. Нажимаем кнопку «Вставить поле слияния» и видим, что все заголовки таблицы являются полями слияния, другим языком — могут загружаться в то место документа, куда были помещены пользователем.
Самое главное — смотреть куда в данный момент установлен курсор, так как именно в эту часть текста и будет добавляться поле слияния.
Установим курсор в заголовок, после символа «№», затем выберем из списка «Вставить поле слияния» пункт «Договор».
Появится слово «Договор» в кавычках. Странно, но нет:) Теперь нужно нажать кнопку «Просмотреть результаты». Картина будет другой. После номера договора подгрузился его номер по магазину «Ручеёк» — 152.
- Заполним все поля — щёлкаем после слова «Магазин» и выбираем пункт «Магазин», после слова «поставщика» и выбираем поле «Контрагент», после «сумму» выбираем пункт «Сумма», после «№» «Договор», после «от» «Дата».
- Снова нажимаем кнопку «Просмотреть результаты».
Данные подгрузились. Как их поменять? Рядом с кнопкой «Просмотреть результаты» есть стрелка. Щелкая на неё можно увидеть как меняются данные.
Вот так можно быстро подгрузить данные из Excel в Word. В следующих уроках мы сделаем похожее действие — только с помощью VBA.
Источник: http://pcandlife.ru/sozdanie-documenta-word-iz-excel/
Слияние данных 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 шаг: вставляем нужные поля в документ. Прежде, чем выбрать один из предложенных Мастером вариантов работы, следует установить курсор в тексте туда, куда Вы хотите вставить данные. Если Вы забыли это сделать, тоже ничего страшного, поля можно вставить в любое место документа, а затем перенести. В нашем случае ставим курсор после слова «Уважаем» перед восклицательным знаком. Так как нам нужны отдельные поля, выбираем Другие элементы… | |
![]() |
Раскрывается диалоговое окно для выбора полей слияния. ![]() ![]() |
5 шаг: просматриваем получившиеся письма, используя кнопки навигации. На этом шаге также можно изменить список получателей, применив фильтр или убрав флажки. Так как мы применили фильтр ранее, получателей осталось 3. | |
Присмотревшись повнимательней к полученному результату, видим, что он не вполне соответствует нашим ожиданиям Номер клубной карты вместо 001768 отображается как 1768, а дата и вовсе не по-нашему: сначала месяц, а потом день, хотя в таблице Excel всё было в порядке. Такие же неприятности могут возникнуть при импорте ячеек с десятичными числами, денежным форматом и т.д. Вывод неутешительный: при слиянии форматирование чисел и дат не сохраняется. Но выход есть! Поля документа Word, в которые вставляются наши данные, представляют собой код, который, во-первых, можно посмотреть, а во-вторых, изменить. Чтобы увидеть код поля, например, с номером клубной карты, следует кликнуть по нему правой кнопкой мыши (ПКМ) и выбрать команду Коды/Значения полей. Получим следующее { MERGEFIELD «M__клубной_карты» } Сам код изменять мы не будем, а вот формат допишем. Принцип добавления формата будет понятен любому, кто хоть немного знаком с созданием пользовательского формата в Excel. Чтобы число всегда состояло из шести цифр, формат должен состоять из шести нулей: { MERGEFIELD «M__клубной_карты» # «000000» }. Теперь снова ПКМ по полю — Обновить поле, и видим число в нужном формате. Аналогично поступаем с датой { MERGEFIELD «дата_окончания_действия_карты» @ «DD.MM.YYYY» } И получаем окончательный вариант Подробнее о кодах полей Word можно прочитать в справочной системе Word или на официальном сайте Microsoft | |
6 шаг: выбираем вариант Изменить часть писем… и просматриваем получившийся документ, при необходимости его можно отредактировать, сохранить как отдельный файл или отправить на печать |
Источник: http://loco.ru/materials/425-slianie-dannyh-ms-excel-i-ms-word
Как объединить несколько файлов Excel в один
Вам когда-нибудь приходилось сводить несколько таблиц Excel в одну? Самое неприятное в этом процессе, обычно, заключается в том, что эти таблицы могут содержать сразу по несколько листов внутри каждого файла. Есть ли решение данной проблемы? Сегодня вы об этом узнаете.
Объединим несколько файлов Excel в один, воспользовавшись силой скрипта VBA
Этот способ сделает все за вас, но только вам придется немного под напрячься. Хорошо, если у вас есть хоть какие-то навыки программиста. Но, если вы полный чайник в Excel и, вообще, в компьютере, то переходите ко второму способу, либо, будьте очень внимательными.
Итак, приступим.
Как и в методе «Как объединить несколько файлов Ворд в один», во-первых, прежде чем дать команду объединить несколько таблиц в одну в Excel, вам нужно эти таблицы собрать в одну отдельную папку.
Посмотрите на скриншоте, как я это сделал.
Теперь запустим программу VBA. Прочитайте в «Запуск скрипта VBA в Word», потому что принцип в Excel тот же самый.
Теперь, когда вы готовы, вот сам код скрипта:
Sub GetSheets()
Path = «Укажите пусть до папки с файлами Excel»
Filename = Dir(Path & «*.xls»)
Do While Filename «»
Workbooks.Open Filename:=Path & Filename, ReadOnly:=True
For Each Sheet In ActiveWorkbook.Sheets
Sheet.Copy After:=ThisWorkbook.Sheets(1)
Next Sheet
Workbooks(Filename).Close
Filename = Dir()
Loop
End Sub
Прошу обратить внимание на две строчки.
- Path = «Укажите пусть до папки с файлами Excel». Конечно, надпись в кавычках нужно заменить. Например, я заменил на … и вот, что у меня получилось: Path = » D:mrUnrealistDocumentsНовая папка»
- Filename = Dir(Path & «*.xls»). В кавычках указан формат файла. В Excel их, обычно, два: .xls и .xlsx. Нажмите на файл правой кнопкой мыши и посмотрите «Свойства» файла. В скобках указан правильный тип файла.несколько таблиц в одну excel
Этот код подойдет, если нужно объединить все листы в один файл Эксель. Но, если вам необходимо объединить определенные листы некоторых файлов, переходите к следующему способу.
Функция «Переместить/скопировать» поможет объединить несколько листов Excel в один файл
В этом методе мы научимся копировать листы из одного файла Excel в другие.
- Откройте все файлы, из которых вы собираетесь копировать листы, и тот файл (это может быть и новая пустая книга Эксель), в котором будут эти листы собраны.
- Теперь откройте книгу, из которой будете копировать листы. Выберите те листы, которые вам нужны. Для множественного выбора держите зажатой клавиши CTRL (для выбора отдельных листов), либо SHIFT (для выбора всех вместе листов).
- Нажмите по имени листа правой кнопкой мыши и в контекстном меню выберите пункт «Переместить/скопировать».
- В окне «Переместить или скопировать» выберите из списка «Переместить выбранные листы в книгу» нужную вам книгу. Т.е. ту, где вы собираете все листы вместе. А в списке «Перед листом» укажите место, где эти листы будут вставлены.
Если вы не желаете, чтобы ваши листы пропали из открытой книги, поставьте галочку «Создать копию». - Нажмите на кнопку «ОК» и выбранные листы будут перемещены или скопированы.
- Повторяйте со второго пункта до тех пор, пока вы не получите должного результата.
Источник: https://v-ofice.ru/excel/obedinit-faily-excel-v-odin/
Слияние Excel и Word, зачем это нужно и что это дает
В статье рассмотрим слияние Excel и Word на практике. Эта нужно при написании какого-либо письма, отчета и других документов. Затем, его отправляют людям по электронной почте или распечатывают через принтер.
Что такое слияние Excel и Word
Зачем совмещать документы Word и Excel? Это делается для составления писем, электронных сообщений (чтобы отправить письмо по электронной почте), конвертов, каталогов и наклеек.
Допустим мы имеем на компьютере таблицу с информацией о продвигаемых статьях, которую нужно передать коллеге по работе в виде письма. В ней содержится название статьи, дата, когда она была опубликована и какие статьи можно найти в Сети. А документ Word, должен быть пустым, чтобы таблица успешно с ним соединилась.
В следующей части статьи попробуем это сделать.
Сначала работаем с документом Word
Для начала разберём процесс вставки двух документов согласно инструкции:
- Откройте на компьютере пустой документ Ворд. Откроем для работы отдельный файл Word, который не должен содержать в себе текстовой и цифровой информации.
- Загружаете таблицу в Word. Можете сделать проще – вставьте табличный процессор в документ Excel. Об этом можете узнать в статье на блоге.
- Сохраняете документ. После того, как Вы соедините два документа в один, его можно сохранить на компьютер. Или используйте кнопку в Ворде печать, чтобы его распечатать на листе бумаги A4.
Рассмотрим все подробности соединения двух документов во всех деталях.
Слияние документов в Word и Excel, пошаговая инструкция
Итак, как сделать слияние документов в Word и Excel? Всё просто. Приготовьте заранее таблицу Excel с данными. Далее, создаёте на компьютере пустой документ текстового редактора Word.
Затем, нажмите в созданном документе на раздел «Рассылки» (версия Ворда 2007) и выберите варианты «Пошаговый мастер слияния» (Скрин 1).
Далее, будет открыто окно справа, в котором нужно нажать на «Письма» или другой вариант. Внизу нажимаете на ссылку – «Далее, открытие документа» (Скрин 2).
В следующем окне оставляем всё без изменений и нажимаете раздел – «Далее, выбор получателей» (Скрин 3).
В нём нужно оставить первый вариант – «Использование списка», чтобы загрузить в документ данные из Excel таблицы.
Для этого нажмите кнопку «Обзор» и добавьте Excel-таблицу со своего компьютера (Скрин 4).
После чего можете нажать «ОК». Далее, Вам предложат убрать галочки в списке. Если какое-то слово не нужно, то можете его убрать. Затем, нажимаем «OK».
Далее, нажимаете на раздел «Вставить поле слияния» и просто устанавливаете данные из таблицы в нужные места документа Word (Скрин 5).
Вы можете нажать кнопку «Просмотр результатов» и посмотреть, как вставилась информация из Excel. Для сохранения и распечатки документа, нажмите на красный крестик или кнопку «Быстрая печать».
Заключение
Мы сделали в статье слияние документов в Word и Excel по инструкции. Вы сможете соединить нужные Вам документы довольно быстро.
Во время вставки данных из Эксель таблицы, можно переносить слова или цифры с помощью горячих клавиш Ворда. Например, используем клавишу «Enter», чтобы перенести часть предложения на другую строку.
Источник: https://biz-iskun.ru/sliyanie-dokumentov-v-word-i-excel.html
Как объединить данные из нескольких файлов Excel в один файл Excel или базу данных Access?
У меня есть несколько десятков файлов excel, которые имеют одинаковый формат (т. е. 4 листа на файл Excel). Мне нужно, чтобы объединить все файлы в 1 файл, который должен иметь только 2 из 4 листов. Соответствующие таблицы из каждого файла Excel называются точно так же, как и заголовки столбцов.
хотя каждый файл структурирован одинаково, информация на листах 1 и 2 (например) различна. Таким образом, он не может быть объединен в один файл со всем в одном простыня!
Я никогда не использовал VBA раньше, и мне интересно, где я мог бы начать эту задачу!
Так вы хотели их на одном листе, я думаю, что выше, не то, что вы искали.
Я использую Microsoft Access для объединения данных. Особенно, если разные листы имеют одинаковый идентификатор (номер детали/Контактное лицо/ect).
вы создаете «таблицу» для каждой таблицы, которая будет объединена
Вы создаете «запрос», который тянет нужные столбцы на один лист
отвечен Agent-311 2013-10-19 01:36:29 источник
- смотрите мастер консолидации листов надстройка для Excel
- надстройки имеет несколько режимов слияния, один из них делает именно то, что вам нужно.
- пожалуйста, смотрите эту ссылку для детального описания режима (как объединить листы с одинаковым названием в один)
- надстройка является условно-бесплатной, но она имеет 15-дневную полнофункциональную пробную версию (кнопка загрузки в верхней части страницы), поэтому вы можете объединить тысячи ваших книги бесплатно 🙂
отвечен Alex Frolov 2013-10-21 14:39:29 источник
здесь — решение на python.
import glob
import pandas as pd
path = «»
file_identifier = «*.xlsx»
all_data = pd.DataFrame()
for f in glob.glob(path + «/*» + file_identifier):
df = pd.read_excel(f)
all_data = all_data.append(df,ignore_index=True)
отвечен abalter 2016-10-26 01:45:42 источник
- откройте все книги Excel в одном экземпляре Excel.
- для просмотра отдельных книг может потребоваться нажать внутреннюю кнопку «Восстановить».
- выбрать все листы, которые вы хотите переместить на Ctrl+щелчок по вкладкам листа.
- щелкните правой кнопкой мыши на одной из выбранных вкладок и выберите переместить или скопировать…
- в появившемся диалоговом окне выберите целевую книгу ( «Master» workbook), а затем выберите, куда их вставить.
- (переместить в конец) вариант, вероятно, то, что вы хотите, но вы всегда можете изменить их порядок позже.
- выбрать Создать копию если вы не хотите, чтобы листы были удалены из первой книги клик OK.
выбранные листы будут перемещены или скопированы из исходной книги в главную книгу. Просто закройте wookbook источник и сделать это снова следующий, пока вы не собрали все листы вы заботитесь о в один большой wookbook. Обязательно сохраните!
отвечен Darth Android 2013-10-19 01:28:57 источник
Источник: https://kompsekret.ru/q/how-to-merge-data-from-multiple-excel-files-into-a-single-excel-file-or-access-database-12357/
Excel слияние двух файлов на основе переменной
Поскольку вам нужно объединить информацию для каждой переменной, я предполагаю, что переменная существует только один раз, по крайней мере, в одной из книг? Другими словами, вам не нужно объединять информацию в рабочей книге , прежде чем объединять книги, не так ли?
- Если это так, и одна книга перечисляет каждую переменную (и, возможно, дополнительную информацию для этой переменной) только один раз, вы можете использовать ее в качестве базовой книги при поиске между книгами.
- Вот некоторые общие указания, чтобы добиться успеха:
- Используя код Excel-VBA, откройте рабочие книги:
‘define the input filepath Dim inputfilepath As String ‘define workbook name where variable info is located Dim workbookTitle As String workbookTitle = «Workbook1» ‘this creates a filepath, filename, and file extension. ‘if not «.xls», change to make appropriate inputfilepath = ActiveWorkbook.Path & «» & workbookTitle & «.xls» ‘open comparing workbook. see .OpenText method documentation for ‘more details and options Workbooks.OpenText Filename:=inputfilepath, Origin:= _ xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _ xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _ Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), _ Array(2, 1)), TrailingMinusNumbers:=True
Как вы находите переменные? Вы упомянули, используя VLOOKUP , что хорошо. Но в этом случае, поскольку вы используете Excel-VBA, я хотел бы предложить использовать свойство Range.Value . Вы можете использовать цикл for для прохождения каждой переменной в базовой книге.
Как вы находите, существует ли эта переменная в другой книге? Затем найдите эту переменную, используя другой цикл for , вложенный внутри первого цикла for :
‘find the variable. ‘here, it’s assumed variable on first line Dim myVar As String ‘1st for loop ‘w needs to be assigned to the appropriate workbook, ‘and s needs to be assigned to the appropriate worksheet For varRow = 2 To Workbooks(w).Worksheets(s).UsedRange.Rows.Count ‘assign the variable name to «myVar» myVar = Workbooks(w).Worksheets(s).Range(Cells(varRow, 0)).Value ‘nested for loop ‘similar to parent for loop, w2 needs to be assigned to the ‘appropriate workbook for finding additional variable info, ‘and s2 needs to be assigned to the appropriate worksheet For varRow2 = 2 To Workbooks(w2).Worksheets(s2).UsedRange.Rows.Count ‘assign the variable under inspection in the comparison ‘worksheet to «compareVar.» compareVar = Workbooks(w2).Worksheets(s2).Range(Cells(varRow2, 0)).Value ‘perform StrComp to compare myVar and compareVar, and see ‘if a match. If StrComp(CStr(myVar), CStr(campareVar)) 0 Then ‘code for merging values here, since this ‘will execute if the variables match End If Next Next
Я использую функцию StrComp чтобы узнать, существует ли имя переменной в другой книге. Я также использую .UsedRange.Rows.Count чтобы определить пределы цикла for, поскольку это один из способов определения рабочего диапазона на листе. Циклы for просто проходят по строкам, глядя на информацию в этой строке. Эта структура может быть адаптирована для того, как информация создается в книгах.
Теперь это идет по строкам, но как вы переходите на страницуbreak-to-pagebreak? Благодаря этому ответу SO , вы можете выполнять итерацию через разрывы страниц. Я изменил первый цикл for сверху, поэтому он использует поиск по страницеbreak. Сравните это с приведенным выше кодом, чтобы узнать, как он изменился. Это также можно адаптировать к деталям:
‘1st for loop ‘w needs to be assigned to the appropriate workbook, ‘and s needs to be assigned to the appropriate worksheet For Each pgBreak In Workbooks(w).Worksheets(s).HPageBreaks ‘assuming the variable is immediately after a pagebreak, ‘assign the variable name to «myVar» myVar = Workbooks(w).Worksheets(s) _ .Range(Cells(pgBreak.Location.Row + 1, 0)).Value
Надеюсь, все это поможет, и все будет за вас.
Источник: https://excel.bilee.com/excel-7431.html
Excel слияние двух файлов на основе переменной
Так как вам нужно объединить информацию для каждой переменной, я угадать переменную существует только один раз, по крайней мере, в одной из книг? Другими словами, вам не нужно объединять информацию в книге, прежде чем сочетать между книгами, не так ли?
- Если это так, и одна книга перечисляет каждую переменную (и, возможно, дополнительную информацию для этой переменной) только один раз, вы можете использовать ее в качестве базовой книги при поиске между книгами.
- Вот некоторые общие указатели, чтобы получить вещи, идущие:
- Использование Excel-VBA код, открыть рабочие книги:
‘define the input filepath
Dim inputfilepath As String
‘define workbook name where variable info is located
Dim workbookTitle As String
workbookTitle = «Workbook1»
‘this creates a filepath, filename, and file extension.
‘if not «.xls», change to make appropriate
inputfilepath = ActiveWorkbook.Path & «» & workbookTitle & «.xls»
‘open comparing workbook. see .OpenText method documentation for
‘more details and options
Workbooks.OpenText Filename:=inputfilepath, Origin:= _
xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), _
Array(2, 1)), TrailingMinusNumbers:=True
Как найти переменные? Вы упомянули, используя VLOOKUP, что хорошо. Но в этом случае, поскольку вы используете Excel-VBA, я хотел бы предложить использовать свойство Range.Value. Вы можете использовать цикл for для прохождения каждой переменной в базовой книге.
Как вы находите, существует ли эта переменная в другой книге? Тогда поиск этой переменной с помощью другого for цикла, вложенного в первый for цикла:
‘find the variable.
‘here, it’s assumed variable on first line
Dim myVar As String
‘1st for loop
‘w needs to be assigned to the appropriate workbook,
‘and s needs to be assigned to the appropriate worksheet
For varRow = 2 To Workbooks(w).Worksheets(s).UsedRange.Rows.Count
‘assign the variable name to «myVar»
myVar = Workbooks(w).Worksheets(s).Range(Cells(varRow, 0)).Value
‘nested for loop
‘similar to parent for loop, w2 needs to be assigned to the
‘appropriate workbook for finding additional variable info,
‘and s2 needs to be assigned to the appropriate worksheet
For varRow2 = 2 To Workbooks(w2).Worksheets(s2).UsedRange.Rows.Count
‘assign the variable under inspection in the comparison
‘worksheet to «compareVar.»
compareVar = Workbooks(w2).Worksheets(s2).Range(Cells(varRow2, 0)).Value
‘perform StrComp to compare myVar and compareVar, and see
‘if a match.
If StrComp(CStr(myVar), CStr(campareVar)) 0 Then
‘code for merging values here, since this
‘will execute if the variables match
End If
Next
Я использую StrComp функцию, чтобы увидеть, если имя переменной существует в другой книге. Я также использую .UsedRange.Rows.Count, чтобы определить пределы цикла for, так как это один из способов определить рабочий диапазон на листе. Циклы for просто проходят по строкам, глядя на информацию в этой строке. Эта структура может быть адаптирована для того, как информация создается в книгах.
Теперь это проходит по строкам, но как вы начинаете разворачивать страницы? Благодаря this SO answer вы можете перебирать перерывы страниц. Я изменил первый цикл for сверху, поэтому он использует поиск по страницеbreak. Сравните это с приведенным выше кодом, чтобы узнать, как он изменился. Это также можно приспособить к деталям:
‘1st for loop
‘w needs to be assigned to the appropriate workbook,
‘and s needs to be assigned to the appropriate worksheet
For Each pgBreak In Workbooks(w).Worksheets(s).HPageBreaks
‘assuming the variable is immediately after a pagebreak,
‘assign the variable name to «myVar»
myVar = Workbooks(w).Worksheets(s) _
.Range(Cells(pgBreak.Location.Row + 1, 0)).Value
Надеюсь, что все это поможет вам и поможет вам.
Источник: https://stackoverrun.com/ru/q/8180091
Слияния Word с данными из Excel !!!Слияние Word с данными из Excel !!
Постановка задачи
Предположим, что у нас имеется вот такая таблица Excel:
В ней хранится информация о ключевых клиентах нашей компании (адреса, имена и т.д.), которых мы хотим поздравить с очередным праздником с помощью вот такого поздравительного письма в Word:
Задача состоит в том, чтобы автоматически создать на каждого отдельное письмо, куда будут подставлены ФИО и название компании клиента, с тем чтобы потом эти письма вывести на печать. В терминах Microsoft Office такая процедура называется Слиянием (Mail Merge).
Шаг 1. Подготовка списка клиентов в Excel
Таблица со списком клиентов должна удовлетворять нескольким простым условиям:
- шапка таблицы должна быть простой — одна строка с уникальными названиями столбцов (без повторений и пустых ячеек)
- в таблице не должно быть объединенных ячеек
- в таблице не должно быть пустых строк или столбцов (отдельные пустые ячейки допускаются)
- т.к. Excel и Word не смогу сами определить пол клиента по имени, то имеет смысл сделать отдельный столбец с обращением (господин, госпожа и т.п.) или с родовым окончанием (-ый или -ая) для обращения «Уважаемый(ая)…»
Шаг 2. Подготовка шаблона письма в Word
Здесь все проще — нужен обычный документ Word с оставленными в нем пустыми местами для вставки полей из списка Excel.
Шаг 3. Слияние
- Открываем шаблон письма в Word и запускаем пошаговый Мастер Слияния на вкладке Рассылки (Mailings) кнопкой Начать слияние (StartMailMerge) – Пошаговый мастер слияния (Step—by—StepMergeWizard):
- В Word 2003 и старше эта команда была доступна в меню Сервис — Письма и рассылки — Мастер слияния (Tools — Letters and Mailings — Mail Merge).
- Далее следует процесс из 6 этапов (переключение между ними — с помощью кнопок Вперед (Next) и Назад (Back) в правом нижнем углу в области задач).
Этап 1. Выбор типа документа.
На этом шаге пользователь должен выбрать тип тех документов, которые он хочет получить на выходе после слияния. Наш вариант — Письма (Letters).
Этап 2. Выбор документа
На этом шаге необходимо определить, какой документ будет являться основой (заготовкой) для всех будущих однотипных сообщений. Мы выбираем — Текущий документ (Current document).
Этап 3. Выбор получателей
На этом шаге мы подключаем список клиентов в Excel к документу Word.
Выбираем Использование списка и жмем на Обзор (Browse), после чего в диалоговом окне открытия файла указываем где лежит наш файл со списком клиентов.
После выбора источника данных, Word позволяет провести фильтрацию, сортировку и ручной отбор записей при помощи окна Получатели слияния:
Этап 4. Создание письма
На этом этапе пользователь должен указать – куда именно в документ должны попасть данные из подключенного списка. Для этого необходимо установить курсор в точку вставки в письме и использовать ссылку Другие элементы — она выводит полный набор всех полей списка, из которого мы и выбираем нужное поле для вставки:
В итоге, после вставки всех полей слияния у нас должно получиться нечто похожее:
Этап 5. Просмотр писем
На этом этапе пользователь уже может предварительно просмотреть результаты слияния, используя кнопки со стрелками. При необходимости, также, можно исключить любого получателя из набора.
- Этап 6. Завершение слияния
- Нажатие ссылки Печать приведет к немедленной отправке всех результатов слияния на принтер без вывода на экран.
- Если необходимо сохранить созданные в результате слияния документы для дальнейшего использования или требуется внести ручную правку в некоторые из документов, то лучше использовать ссылку Изменить часть писем (Edit individual letters), которая выведет результаты слияния в отдельный файл:
Вуаля! Получившийся документ можно отправить на печать или отредактировать-сохранить по желанию для похожих рассылок в будущем.
Источник: https://subscribe.ru/group/video-uroki/1861463/