Выгрузка данных из Access в шаблон Word и Excel

Автор: | 01.06.2022

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

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

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

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

Экспорт данных из Access в шаблон Word

Вся разработка делится на две части, это:

  • Настройка шаблона Word;
  • Настроить загрузку данных в шаблон.

 

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

Примечание! Я использую Microsoft Word 2003.

Откройте шаблон Word, сначала добавьте необходимую панель инструментов, для этого нажмите «Вид -> Панель инструментов» и установите флажок «Формы». Теперь у вас отображается панель инструментов Shapes. Все, что осталось сделать, это вставить в места, где вы хотите отображать данные, элементы «Текстовое поле», которые доступны на только что добавленной панели инструментов.

После добавления поля у вас будет серая область, указывающая, что поле было добавлено. Теперь нужно задать имя этого поля, чтобы потом вставлять в него значения из доступа (стандартное имя не очень удобно). Для этого щелкните правой кнопкой мыши поле и выберите «Свойства». В поле маркера введите желаемое имя для этого поля, в примере я назвал его MyTestPole.

 

Скриншот 1

 

Создайте столько полей, сколько вам нужно.

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

Перейдем к более интересной задаче, это реализация загрузки Access в этом шаблоне на VBA.

Примечание! Я использую Access в связке с MS SQL 2008, поэтому данные буду брать оттуда.

Код VBA для выгрузки данных в шаблон Word

Допустим, у вас есть форма, создайте на ней кнопку (я назвал ее тестовой кнопкой) и вставьте следующий код VBA в событие нажатия кнопки:

Код закомментирован, так что проблем быть не должно. Здесь цель состоит в том, чтобы создать объект word.document и word.application. А дальше мы уже работаем со своими объектами, то есть наполняем их.

Экспорт данных из Access в шаблон Excel

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

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

Код VBA для выгрузки данных в шаблон Excel

Сначала добавьте кнопку на форму (я назвал ее testexcel) и вставьте следующий код в событие «Нажатие кнопки».

Поскольку новая строка будет создана без объединений или значений XLT.Worksheets(«Sheet1»).Rows(Rowss — 1).Copy newrow ‘, это всего лишь пример того, как удалить диапазон в документе ‘XLT. Листы («Лист1»). Range(«A10:F10»).ClearContents ‘динамически генерирует нужный адрес ячейки cell = «a» & Rowss ‘и устанавливает его значение в XLT.Worksheets(«Sheet1»).Range(cell) = numrow cell = «b» & Rowss XLT.Worksheets(«Лист1»).Range(cell) = rsd.Fields(«field5»).Value ‘перейти к следующей строке Rowss = Rowss + 1 ‘перейти к следующей строке в источнике данных rsd .MoveNext Else ‘и это делается до тех пор, пока не закончатся строки, данные в шаблоне’, то есть если в исходнике всего 1 строка, то в коде

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

Для справки, я использовал позднюю ссылку здесь при создании объекта для Word.Application и Excel.Application, чтобы не добавлять необходимые библиотеки и обеспечить совместимость.

Надеюсь, мои примеры вам помогут!

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *