Доброго дня! Проблема в следующем. Из бд Access формируется документ Word (на основании шаблона .dot с закладками), в который передаются данные из Access. С передачей значений из Access в поля в Word разобрался. Не получается передать из Access массив значений (который представляет собой данные из таблицы Lek) в поле со списком в Word (в шаблоне Word полю со списком присвоил идентификатор combo2). Кусок кода в Access выглядит так (проблемная часть — строка 36 кода):
re>Private Sub Кнопка44_Click() Dim docshPath As String ‘путь файла шаблона документа Dim docFinPath As String ‘путь готового файла документа Dim Rs As DAO.Recordset Dim lntCount As Integer lntCount = DCount("*", "Lek") Dim LekSpisok(100) As String Set Rs = CurrentDb.OpenRecordset("Lek", dbOpenDynaset) Dim i As Integer For i = 0 To lntCount — 1 LekSpisok(i) = Rs!Лекарство Rs.MoveNext Next i Rs.Close Me.ПолеСоСписком42.SetFocus If Me.ПолеСоСписком42.Text = "" Then Exit Sub docshPath = gegtbl docsh" "Files" "doc" "_" "-" "_" fio").Range.Text = fio app.ActiveDocument.Bookmarks.Item("nib").Range.Text = ibnumber app.ActiveDocument.Bookmarks.Item("age").Range.Text = age For i = 0 To lntCount — 1 app.ActiveDocument.Bookmarks.Item("combo2").AddItem LekSpisok(i) ‘собственно здесь я и пытаюсь заполнить поле со списком в Word. Происходит ошибка и переходим к merr. Next i app.ActiveDocument.Bookmarks.Item("datenow").Range.Text = Date app.ActiveDocument.Bookmarks.Item("datepost").Range.Text = postDate app.ActiveDocument.Protect wdAllowOnlyFormFields merr: app.ActiveDocument.SaveAs docFinPath Call listrefresh ‘обновить списки Me.Вкладка32.SetFocus app.Visible = True app.Activate End Sub
Прошу помочь в решении проблемы.
Выгрузка данных из Access в шаблон Word и Excel

Выгрузка данных из Access в шаблоны Word и Excel может упростить вашу работу. В этом курсе мы рассмотрим, как выполнить эту задачу. Узнайте, как использовать функции и макросы для автоматизации выгрузки данных.
Всем привет, сегодня мы поговорим о том, как экспортировать данные из Access в такие приложения, как Word и Excel. Но не о стандартном способе доступа (подключение к Office), а о том, как он позволяет загружать данные в определенный шаблон как в Word, так и в Excel.
Другими словами, это необходимо, когда невозможно или занимает слишком много времени, чтобы создать отчет в Access с использованием уже существующего шаблона, например, в Word. Как вы знаете, отчет в Access может отображаться просто неудобно или, что наиболее распространенный вариант, возникает, когда в отчете Access много текста, который не отформатирован так сильно, как в Word, и данных не так много, но отчеты должны быть автоматизированы, например, некоторые контракты, банковские выписки и так далее.
Использование слияния из самого Word не очень удобно, поэтому сегодня я расскажу вам, как заполнять такие шаблоны прямо из Access, нажав кнопку.
Помимо загрузки в шаблон Word, иногда возникает необходимость загрузить в шаблон Excel, и сегодня мы рассмотрим и этот метод.
Экспорт данных из Access в шаблон Word
Вся разработка разделена на две части, это:
- Настройка шаблона Word;
- Настройка загрузки данных по модели.
Суть настройки шаблона заключается во вставке необходимых полей в те места в шаблоне, где должны отображаться определенные данные. Это делается с помощью полей формы.
Примечание! Я использую Microsoft Word 2003.
Откройте шаблон Word, сначала добавьте необходимую панель инструментов, для этого нажмите «Вид -> Панель инструментов» и установите флажок «Формы». Вы открыли панель с инструментом «Формы». Все, что остается, — это вставить в те точки, где вы хотите просмотреть данные, элементы «Текстовое поле», доступные на недавно добавленной панели инструментов.
После добавления поля у вас будет серая область, указывающая на то, что поле было добавлено. Теперь вам нужно задать имя этого поля, а затем вставить значения из доступа (стандартное имя не очень удобно). Для этого щелкните поле правой кнопкой мыши и выберите «Свойства». В поле закладки напишите желаемое имя для этого поля, в примере я назвал его MyTestPole.
На этом настройка шаблона завершена, я рекомендую сделать этот шаблон доступным только для чтения, в противном случае пользователь возьмет, сформирует документ и сохранит его, а затем шаблон будет утерян, а если вы сделаете его доступным только для чтения, он не будет есть возможность сохранить только через «Сохранить как».
Перейдем к более интересной задаче, это реализация той же загрузки из Access в этом шаблоне в VBA.
Примечание! Я использую Access в сочетании с MS SQL 2008, поэтому я буду получать данные оттуда.
Код VBA для выгрузки данных в шаблон Word
Допустим, у вас есть форма, создайте на ней кнопку (я назвал ее testbutton) и вставьте следующий код VBA в событие нажатия кнопки:
Экспорт данных из Access в шаблон Excel
В шаблоне Excel больше не нужно создавать поля, как в Word, так как здесь мы уже будем руководствоваться адресами ячеек.
Существует несколько способов заполнения шаблона Excel, я опишу два из них, первый — когда вам просто нужно вставить несколько полей, то есть в источнике данных будет только одна строка с несколькими столбцами. Второй — когда строк будет несколько, и вы не знаете, сколько именно (в зависимости от некоторых условий). В шаблоне по умолчанию для этого зарезервированы все несколько строк, поэтому мы добавим нужные нам строки, чтобы наши данные не перекрывали строки ниже (допустим, есть примечание, подпись обработчика, и так далее). И я рекомендую здесь, например, использовать только один источник данных, и если вам нужно вставить заголовок, заметку и определенное количество строк (например, область данных), вы можете использовать несколько источников (набор записей).
Код VBA для выгрузки данных в шаблон Excel
Сначала добавьте кнопку в форму (я назвал ее testexcel) и вставьте следующий код в событие Button Click».
Здесь я тоже все подробно прокомментировал, но если есть вопросы, задавайте их в комментариях к этой статье.
Для информации я использовал позднее связывание при создании объектов Word.Application и Excel.Application, чтобы не добавлять необходимые библиотеки и обеспечить совместимость.
Надеюсь, мои примеры вам помогут!
Публикация и экспорт данных из Microsoft Access
Рассмотрим, как имеющиеся данные из Access можно экспортировать, публиковать в Microsoft Word (или других приложениях Microsoft Office), а так же сливать с существующими документами. Что касается экспорта данных в Excel, то эти вопросы были рассмотрены в параграфе 5.1 главы 5. Для конвертирования данных Microsoft Access в другие форматы используется операция экспорта, а для передачи их в наиболее часто используемые компоненты Office применяется команда Связи с Office из меню Сервис. При экспорте таблицы можно конвертировать не только весь объект, но и его структуру. В Microsoft Access поддерживается экспорт во все основные форматы — базы данных других производителей, форматы передачи данных в Интернет, в электронные таблицы, текстовые файлы.
Публикация данных в Microsoft Word
В Microsoft Access можно экспортировать данные из таблицы или запроса, отчета в формате RTF (.rtf) или текстового формата (.txt). Файлы в формате RTF сохраняют форматирование, такое как шрифты и стили и могут быть открыты в Microsoft Word или других текстовых процессорах и издательских программах для Microsoft Windows. С помощью мастера составных документов Microsoft Word можно создать составной документ Word, связанный с данными Microsoft Access. После установления связи в любое время можно открыть документ в Microsoft Word для печати нового пакета документов на бланке или наклеек с использованием текущих данных Microsoft Access. Более подробно этот вопрос будет рассмотрен в разделе 3.
Для публикации данных из таблицы или запроса в Microsoft Word можно применить алгоритм, приведенный в параграфе 5.1 главы 5. Он справедлив и в
данном случае, только на шаге 4 следует вместо команды Анализ в Microsoft Excel выбрать команду Публикация в Microsoft Word. В результате выполнения алгоритма на экране откроется диалоговое окно Преобразование файла (рис. 1.102), в котором следует выбрать формат Текст в формате RTF и нажать кнопку OK. Microsoft Word создаст новый документ, который будет содержать конвертированные данные в виде таблицы, в первой строке которой содержатся названия полей таблицы базы данных.

Рис. 1.102. Выбор формата конвертирования данных, из Access в Word
Если необходимо опубликовать фрагмент таблицы или запроса, то следует выполнить следующие действия:
- Открыть таблицу в режиме таблицы.
- Выделить фрагмент, который необходимо опубликовать.
- Применить команду Публикация в Microsoft Word из раздела Связи с Office меню Сервис.
- В диалоговом окне Вывод в формате в поле со списком Тип файла выбрать Rich Text Format. Задать, используя поле со списком Папка, место сохранения создаваемого файла.
- Нажать кнопку ОК.
Microsoft Access конвертирует фрагмент таблицы или запроса, сохранит его на диске и откроет созданный документ для просмотра в Microsoft Word.
Таким же образом публикуются данные из отчетов и форм.
ё Примечания. 1. Публикация внедренных объектов (рисунков, диаграмм и т. п.) из отчетов, таблиц, или запросов не поддерживается.
2. После публикации таблиц, содержащих гиперссылки, в документе Word необходимо отредактировать путь к гиперссылке, применив команду Изменить гиперссылку из контекстно-независимого меню.




