Word report from access

Экспорт данных Access в документ Word

Access для Microsoft 365 Access 2021 Access 2019 Access 2016 Access 2013 Access 2010 Access 2007 Еще…Меньше

С помощью мастера экспорта в RTF-файл можно экспортировать данные из базы данных Access в документ Microsoft Word. В этой статье объясняется, как использовать мастер и как сохранить параметры экспорта в виде спецификации для дальнейшего использования.

В этой статье

  • Основы экспорта данных в Word

  • Экспорт данных в Word

  • Как Access экспортирует объекты в Word

  • Дополнительные сведения

Основы экспорта данных в Word

В Microsoft Word можно экспортировать таблицу, запрос, форму или отчет. При экспорте объекта с помощью мастера экспорта в RTF-файл Access создает копию его данных в файле Microsoft Word формата RTF. Отображаемые поля и записи таблиц, запросов и форм экспортируются в документ Word в виде таблицы. При экспорте данных отчета и их представления мастер пытается обеспечить как можно более точное соответствие документа Word отчету.

  • Начало операции.    Для экспорта данных из Access в Word необходимо открыть Access. В Word нет средства импорта данных из базы данных Access. Вы также можете сохранить базу данных или таблицу Access в виде документа Word с помощью команды Сохранить как в Access.

  • Объекты, поддерживающие экспорт.    Вы можете экспортировать таблицу, запрос, форму или отчет. Можно также экспортировать только записи, выбранные в определенном представлении. Макросы и модули экспортировать нельзя. При экспорте формы или таблицы с подчиненными формами или подтаблицами экспортируется только основная форма или таблица. Все подчиненные формы и подтаблицы следует экспортировать в Word отдельно. При экспорте отчета, напротив, все подчиненные формы и вложенные отчеты экспортируются вместе с главным отчетом.

  • Результат операции.    Мастер экспорта в RTF-файл всегда экспортирует форматированные данные. Это означает, что экспортируются только видимые в объекте или представлении поля и записи, а также параметры формата отображения. Столбцы и записи, скрытые из-за применения фильтра, не экспортируются. Макет отчета при экспорте также сохраняется.

  • Слияние с существующим документом.    При экспорте данных из Access в документ Word всегда создается новый файл Word. Если вы хотите вставить данные в существующий документ Word, необходимо сначала экспортировать данные из Access в новый документ Word, а затем скопировать их из нового документа и вставить в имеющийся. Можно также скопировать строки непосредственно из таблицы, запроса, формы или отчета Access и вставить их в документ.

Экспорт данных в Word

Процесс экспорта данных в документ Word включает следующие основные этапы:

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

  • Запуск мастера экспорта в RTF-файл.

  • Сохранение параметров в виде спецификации экспорта для последующего использования (необязательно).

В следующих разделах описано, как выполнить каждую из этих задач.

Подготовка к экспорту

  1. Откройте исходную базу данных Access.

  2. На панели навигации выберите объект с данными, которые вы хотите экспортировать.

    Экспортировать можно таблицу, запрос, форму или отчет.

  3. Просмотрите исходные данные, чтобы убедиться в отсутствии индикаторов ошибок (треугольников зеленого цвета) или значений ошибок, таких как #ЧИСЛО!.

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

  4. Если конечный документ Word существует и открыт, закройте его перед выполнением операции. Перед перезаписью файла мастер запрашивает подтверждение.

    Примечание: Добавить данные в существующий документ Word невозможно.

  5. Если вы хотите экспортировать только часть таблицы, запроса или формы, откройте нужный объект в базе данных Access и выделите записи.

Экспорт данных

  1. На вкладке «Внешние данные» в группе «Экспорт» нажмите кнопку Word.

  2. Откроется мастер Экспорт – Файл RTF.

    Выберите назначение и параметры экспорта в диалоговом окне "Экспорт – Файл RTF".

    Примечание: Команды Экспорт доступны только в том случае, если открыта база данных.

  3. В мастере Экспорт – Файл RTF укажите имя конечного файла.

  4. Мастер всегда экспортирует форматированные данные. Чтобы просмотреть документ Word после экспорта, установите флажок Открыть целевой файл после завершения операции экспорта.

  5. Если вы выделили определенные записи до начала экспорта, можно установить флажок Экспортировать только выбранные записи. Если же требуется экспортировать все записи в представлении, не устанавливайте флажок.

    Примечание: Если записи не выделены, этот флажок недоступен (неактивен).

  6. Нажмите кнопку ОК.

  7. Если документ назначения существует, вам будет предложено нажать кнопку «Да», чтобы переписать файл. Нажмите кнопку «Нет», чтобы изменить имя конечного файла, а затем нажмите кнопку «ОК» еще раз.

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

Как Access экспортирует объекты в Word

В следующей таблице описано, как Access экспортирует разные объекты и значения в Word. Это поможет определить причину проблемы, если экспорт будет выполняться не так, как ожидается.

Элемент

Что нужно учитывать при экспорте

Имена полей

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

Многозначные поля

Многозначное поле Access экспортируется в один столбец в Word. Значения разделяются запятыми (,).

Рисунки, объекты и вложения

Все графические элементы, такие как логотипы, данные в полях объектов OLE и вложения, не экспортируются.

Графы

Объекты Microsoft Graph не экспортируются.

Выражения

Выражения не экспортируются в документ Word. Экспортируются только их результаты.

Подчиненные формы и подтаблицы

При экспорте формы или таблицы экспортируется только основная форма или таблица. Необходимо повторить экспорт для всех подчиненных форм и подтаблиц.

Дополнительные сведения

  • Сведения о том, как сохранить сведения об экспорте в виде спецификации, которую можно использовать повторно, см. в статье Сохранение параметров операции импорта или экспорта в виде спецификации.

  • Дополнительные сведения о запуске спецификаций см. в статье Выполнение сохраненной операции импорта или экспорта.

  • Дополнительные сведения о запуске спецификаций в определенное время см. в статье Планирование импорта или экспорта.

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

К началу страницы

Нужна дополнительная помощь?

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

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

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

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

Содержание

  1. Экспорт данных из Access в шаблон Word
  2. Код VBA для выгрузки данных в шаблон Word
  3. Экспорт данных из Access в шаблон Excel
  4. Код VBA для выгрузки данных в шаблон Excel

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

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

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

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

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

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

Скриншот 1

Курс по SQL для начинающих

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

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

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

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

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

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

   
   Private Sub testbutton_Click()
   
   'Объявляем переменные
   Dim FileDialog As FileDialog
   Dim rsd As ADODB.Recordset
   Dim strSQL As String
   Dim WordApOb As Object
   Dim WordOb As Object
   Dim path As String
   Set rsd = New ADODB.Recordset
   
   'запрос к базе данных для получения необходимых данных
   strSQL = "select * from dbo.table where KOD = " & Me.kod & ""
   rsd.open strSQL, CurrentProject.Connection
  
  'Выбираем шаблон
   Set FileDialog = Application.FileDialog(msoFileDialogOpen)
   
   'убираем множественный выбор, он нам не нужен
   FileDialog.AllowMultiSelect = False
  
  'очистим и установим фильтры
   FileDialog.Filters.Clear
   FileDialog.Filters.add "Word", "*.doc"
   
   'установим фильтр по умолчанию
   FileDialog.FilterIndex = 1
   
   'проверяем, что сделал user, если выбрал шаблон, то начинаем работу
   If FileDialog.Show = False Then
     'Если нет, то выходим
     Set dlgFile = Nothing
     Exit Sub
   End If
   
   'получаем путь к файлу
   path = Trim(FileDialog.SelectedItems(1))
   
   'Очистим переменную
   Set FileDialog = Nothing
   If path <> "" Then
   
   'Будем отслеживать ошибки
   On Error GoTo Err_testbutton_Click
   
   'Создаем объект Word
   Set WordOb = CreateObject("Word.document")
   
   'Задаем нашему документу значение из шаблона
   Set WordOb = GetObject(path)
   
   'Задаем значение объекту word.Application
   Set WordApOb = WordOb.Parent
   
   'делаем приложение word видимым
   WordApOb.Visible = True
   
   'ищем наше поле в шаблоне
   WordOb.Bookmarks("mytestpole").Select
   
   'задаем ему новое значение из нашего Recordset
   WordApOb.Selection.TypeText Text:=Nz(rsd.Fields("field").Value, " ")
   'и так далее по всем полям
   
   'в конце перейдем на начало нашего документа
   WordApOb.Selection.Goto wdGoToFirst
   'и активируем его
   WordApOb.Activate
   
   'Очистим переменные
   Set WordOb = Nothing
   Set WordApOb = Nothing
   
   Exit_testbutton_Click:
     Exit Sub
   
   Err_testbutton_Click:
     MsgBox Err.Description
     'в случае ошибки будем делать следующие
     'закроем word без сохранения
     WordOb.Close (wddonotsavechanges)
     WordApOb.Quit
    'и также очистим переменные
     Set WordOb = Nothing
     Set WordApOb = Nothing
     Resume Exit_testbutton_Click
    End If
   
   End Sub

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

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

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

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

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

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

   
   Private Sub testexcel_Click()
   
   'Объявляем переменные
   Dim XL As Object
   Dim XLT As Object
   Dim newrow As Object
   Dim rsd As ADODB.Recordset
   Dim strSQL As String
   Set rsd = New ADODB.Recordset
   
   'Запрос к базе данных
   strSQL = "select * from dbo.table where kod = " & Me.kod & ""
   rsd.open strSQL, CurrentProject.Connection
   
   'Создаем необходимые объекты
   Set XL = CreateObject("Excel.Application")
   'для примера показываю, как можно сразу загружать шаблон без выбора
   Set XLT = XL.Workbooks.open("C:testfile.xls")
   
   '1 способ - если в источнике данных всего одна строка
   With XLT.Worksheets("Лист1")
              .[a1] = rsd.Fields("field1")
              .[b1] = rsd.Fields("field2")
              .[c1] = rsd.Fields("field3")
              .[d1] = rsd.Fields("field4")
            End With
   
   '2 способ - если строк в источнике несколько
   'причем мы учтем то, что у нас есть шапка и примечание в Excel
   'и мы не знаем, сколько строк у нас вставится 
   'и поэтому строки будем добавлять в случае необходимости
   'зададим, с какой строки будем начинать вставлять данные
   Rowss = 10
   'для нумерации
   numrow = 1
   'запускаем цикл, он будет работать до тех пор, пока не закончатся строки в нашем источнике
   While Not (rsd.EOF)
      'смотрим, если строк больше чем мы задали в шаблоне
      If Rowss >= 12 Then
          'то добавляем строку
         XLT.Worksheets("Лист1").Rows(Rowss).Insert
          'Запомним нашу строку
         Set newrow = XLT.Worksheets("Лист1").Rows(Rowss)
          'и вставим туда копию предыдущей строки
          'для того если вдруг у вас там есть объединенные ячейки или какие-то нужные данные
          'так как новая строка создастся без всяких объединений и значений
         XLT.Worksheets("Лист1").Rows(Rowss - 1).Copy newrow
          'это просто для примера как можно очистить некий диапазон внутри документа
       'XLT.Worksheets("Лист1").Range("A10:F10").ClearContents
       'динамически формируем адрес нужной ячейки
          cell = "a" & Rowss
          'и задаем ей значение
         XLT.Worksheets("Лист1").Range(cell) = numrow
         cell = "b" & Rowss
         XLT.Worksheets("Лист1").Range(cell) = rsd.Fields("field5").Value
         'переходим на следующую строку
          Rowss = Rowss + 1
          'переходим на следующую строку в источнике данных
         rsd.MoveNext
      Else
          'а это выполняется до тех пор, пока не закончатся заданные строки в шаблоне
          'т.е. если строк в источнике всего 1, то в код, который выше мы даже не попадем
         cell = "a" & Rowss
         XLT.Worksheets("Лист1").Range(cell) = numrow
         cell = "b" & Rowss
         XLT.Worksheets("Лист1").Range(cell) = rsd.Fields("field5").Value
         Rowss = Rowss + 1
         rsd.MoveNext
      End If
         
        'для нумерации
        numrow = numrow + 1
   'конец цикла
   Wend
   
   'это просто пример как можно удалить строку целиком
   'XLT.Worksheets("Лист1").Rows(20).Delete
   
   'делаем Excel видимым
   XL.Visible = True
   
   'Очищаем переменные
   Set XL = Nothing
   Set XLT = Nothing
   Set newrow = Nothing
   
   End Sub

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

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

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

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

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

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

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

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

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

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

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

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

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

Экран 1

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

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

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

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

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

Private Sub testbutton_Click () ‘Объявить переменные Dim FileDialog As FileDialog Dim rsd As ADODB.Recordset Dim strSQL As String Dim WordApOb As Object Dim WordOb As Object Dim path As String Set rsd = New ADODB.Recordset’ запрашивает необходимые данные в базе данных strSQL = «select * from dbo.table where KOD =» & Me.kod & «» rsd.open strSQL, CurrentProject.Connection ‘Выбрать шаблон Set FileDialog = Application.FileDialog (msoFileDialogOpen)’ удалить множественный выбор, он мне не нужен FileDialog .AllowMultiSelect = False ‘очистить и установить фильтры FileDialog.Filters.Clear FileDialog.Filters.add «Word», «* .doc»‘ установить фильтр по умолчанию FileDialog.FilterIndex = 1 ‘проверить, что пользователь, если он выбрал шаблон, затем начать работу Если FileDialog.Show = False Then ‘Если нет, то выйти Set dlgFile = Nothing Exit Sub End If’ получить путь к пути к файлу = Trim (FileDialog.SelectedItems (1)) ‘Удалить переменную Set FileDial og = Nothing If path «» Then ‘Построить график ошибок при ошибке GoTo Err_testbutton_Click’ Создать объект Word Set WordOb = CreateObject («Word.document») ‘Установить для нашего документа значение из шаблона Set WordOb = GetObject (path) ‘Установите значение для слова. Application Object Set WordApOb = WordOb.Parent’ сделайте слово приложения видимым WordApOb.Visible = True ‘найдите наше поле в шаблоне WordOb.Bookmarks («mytestpole»). Выберите «установить новое значение из нашего набора записей WordApOb.Selection.TypeText Text: = Nz (rsd.Fields (» field «). Value,» «)» и так далее для всех полей «в конце перейдите к начало нашего документа WordApOb.Selection.Goto wdGoToFirst ‘и активируйте его WordApOb.Activate’ Удалите переменные Set WordOb = Nothing Set WordApOb = Nothing Exit_testbutton_Clicktest: Exit Sub Err_testbutton MsgBox.Description ‘в случае ошибки мы сделаем следующее без сохранения WordOb.Close (wddonotsavechanges) WordApOb.Quit ‘, а также удалить переменные Set WordOb = Nothing Set WordApOb = Nothing Resume Exit_testbutton_Click End End Sub

Код закомментирован, поэтому сложностей возникнуть не должно. Дело здесь сводится к созданию объекта word.document и word.application. И тогда мы уже работаем с нашими объектами, например, их компилируем.

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

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

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

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

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

Private Sub testexcel_Click () ‘Объявить переменные Dim XL As Object Dim XLT As Object Dim newrow As Object Dim rsd As ADODB.Recordset Dim strSQL As String Set rsd = New ADODB.Recordset’ Query database strSQL = «select * from dbo table where kod = «& Me.kod &» «rsd.open strSQL, CurrentProject.Connection ‘Создание необходимых объектов Set XL = CreateObject (» Excel.Application «)’ Например, я показываю, как загрузить шаблон сразу, не выбирая Set XLT = XL. Workbooks.open («C: testfile.xls») ‘1 способ — если источник данных имеет только одну строку с XLT.Worksheets («Sheet1»). [A1] = rsd.Fields («field1»). [B1] = rsd.Fields («field2»). [c1] = rsd.Fields («поле3»). [d1] = rsd.Fields («field4») Заканчивается на ‘2 способ — если в источнике несколько строк’ и мы учтем, что у нас есть заголовок и заметка в Excel ‘и мы не знаем сколько строк мы вставим ‘а затем мы добавим строки, если необходимо’ мы установим, с какой строки мы начнем вставлять данные Rows = 10 ‘для нумерации и numrow = 1’ мы запускаем цикл, он будет работать, пока мы не запустим вне строк в нашем источнике While Not (rsd.EOF) ‘посмотрите, есть ли больше строк, чем мы установили в модели If Rowss> = 12 Then’, затем добавьте строку XLT.Worksheets («Sheet1»). Rows (Rowss) .Insert ‘Помните нашу строку Set newrow = XLT.Worksheets («Sheet1»). Rows (Rowss) ‘и поместите туда копию предыдущей строки’, если вдруг появятся объединенные ячейки или потребуются некоторые данные, «потому что новая строка будет создана без каких-либо объединений и значений XLT». XLT.Worksheets («Sheet1»). Диапазон («A10: F10»). ClearContents ‘динамически формирует адрес желаемой ячейки cell = «a» & Rowss’ и устанавливает для него значение XLT.Worksheets («Sheet1»). Range (cell) = numrow cell = «b» & Rowss XLT.Worksheets («Sheet1» Range (cell) = rsd.Fields («field5»). Value ‘перейти к следующей строке Rows = Rows + 1’ перейти к следующей строке in — это источник данных rsd.MoveNext Else ‘, и это выполняется до указанных строк в шаблоне’, т.е если в источнике есть только 1 строка, мы даже не будем входить в код выше cell = «a» и Rowss XLT.Worksheets («Sheet1»). Range (cell) = numrow cell = «b» и Rowss XLT.Worksheets («Sheet1»). Range (cell) = rsd.Fields («field5»). Value Rowss = Rowss + 1 rsd.MoveNext End If ‘для нумерации numrow = numrow + 1’ конец цикла Wend ‘- это просто пример того, как вы можете полностью удалить строку’ XLT.Worksheets («Sheet1»). Rows (20) .Delete ‘делает Excel XL visible .Visible = True ‘Очистить переменные Set XL = Nothing Set XLT = Nothing Set newrow = Nothing End subtitle

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

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

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

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

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

Начнем с Word.

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

• Настройка шаблона Word;

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

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

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

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

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

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

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

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

Private Sub testbutton_Click()

‘Объявляем переменные

Dim FileDialog As FileDialog

Dim rsd As ADODB.Recordset

Dim strSQL As String

Dim WordApOb As Object

Dim WordOb As Object

Dim path As String

Set rsd = New ADODB.Recordset

‘запрос к базе данных для получения необходимых данных

strSQL = «select * from dbo.table where KOD = » & Me.kod & «»

rsd.open strSQL, CurrentProject.Connection

‘Выбираем шаблон

Set FileDialog = Application.FileDialog(msoFileDialogOpen)

‘убираем множественный выбор, он нам не нужен

FileDialog.AllowMultiSelect = False

‘очистим и установим фильтры

FileDialog.Filters.Clear

FileDialog.Filters.add «Word», «*.doc»

‘установим фильтр по умолчанию

FileDialog.FilterIndex = 1

‘проверяем, что сделал user если выбрал шаблон, то начинаем работу

If FileDialog.Show = False Then

‘Если нет то выходим

Set dlgFile = Nothing

Exit Sub

End If

‘получаем путь к файлу

path = Trim(FileDialog.SelectedItems(1))

‘Очистим переменную

Set FileDialog = Nothing

If path <> «» Then

‘Будем отслеживать ошибки

On Error GoTo Err_testbutton_Click

‘Создаем объект Word

Set WordOb = CreateObject(«Word.document»)

‘Задаем нашему документу значение из шаблона

Set WordOb = GetObject(path)

‘Задаем значение объекту word.Application

Set WordApOb = WordOb.Parent

‘делаем приложение word видимым

WordApOb.Visible = True

‘ищем наше поле в шаблоне

WordOb.Bookmarks(«mytestpole»).Select

‘задаем ему новое значение из нашего Recordset

WordApOb.Selection.TypeText Text:=Nz(rsd.Fields(«field»).Value, » «)

‘и так далее по всем полям

‘в конце перейдем на начало нашего документа

WordApOb.Selection.Goto wdGoToFirst

‘и активируем его

WordApOb.Activate

‘Очистим переменные

Set WordOb = Nothing

Set WordApOb = Nothing

Exit_testbutton_Click:

Exit Sub

Err_testbutton_Click:

MsgBox Err.Description

‘в случае ошибки будем делать следующие

‘закроем word без сохранения

WordOb.Close (wddonotsavechanges)

WordApOb.Quit

‘и также очистим переменные

Set WordOb = Nothing

Set WordApOb = Nothing

Resume Exit_testbutton_Click

End If

End Sub


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

Теперь перейдем к Excel.

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

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

Microsoft Access is a database solution that makes compiling data simple. But what if you wanted to export it as a Word document? Here’s how to do it!

run queries in access featured

Microsoft’s Office suite has different apps for different tasks. So, for instance, if you want to create a database, Microsoft Access has your back. Access provides most of the features you would expect from a relational database management system. You can create tables, forms, queries, relations, reports, macros, modules, to name a few.

But from time to time, you might want to export data from Microsoft Access to Word. If you’re looking for an easy way to export Access data into Word, you’re in the right place.

How Access Exports Objects to Word

Before showing you how to export data from Microsoft Access to Word, you need to understand some basics. First, you cannot export all types of objects from Access to Word.

Currently, you can only export tables, queries, forms, and reports. However, each object still has some limitations. Starting with records, Access only exports those that are in a selected view. The application will not include all the hidden data in a report. Similarly, Access is only able to export forms and data sheets with subforms and sub-data sheets.

The only way around this is to export every subform and sub data sheet. If you export the main report, you can export multiple subforms and subreports.

Secondly, you can’t export relationships, macros, modules, and graphical objects like pictures and Microsoft Graph objects from Access to Word. Additionally, Access will only export results from expressions and not expressions themselves.

Lastly, there’s no way to import data from Microsoft Access to Word. You must start in Access, export your data to a new document, then copy the contents and paste them into your existing Word document.

How to Export Access Data to a Word Document

Exporting Access data to Word uses a built-in Export—RTF File Wizard tool. Sure, the tool has many limitations around exporting Access data, but it’s better than nothing.

But if that’s overly limiting, you can look out for some of the best free Microsoft Access alternatives for a possible replacement. Otherwise, follow these steps to export your data from Access to Word:

  1. Open your Access database.
  2. Select the object you want to export in the Navigation Pane.
  3. Examine the table, query, form, or report to ensure it’s error-free. Access typically includes error indicators whenever it recognizes an error. This can include green triangles and a variety of error numbers. This step is important since Access will automatically replace error locations with a null value after exporting your data.
  4. Select the view or portion of the data to export. The best way to select data to export from multiple tables is by running MS Access queries. If you want to export all the data from an object, skip this step.
    MS Access table with portions of data selected
  5. Click the External Data tab and select More > Word. The Export—RTF File export wizard tool will open.
    Different formats of exporting data from MS Access
  6. In the Export—RTF File export wizard pop-up, enter your file name and select a destination.
    The Export - RTF File export wizard tool in MS Access
  7. Check the Open the destination file after the export operation is complete check box if you need to.
  8. If you selected certain data to export, check the Export only the selected records check box. Otherwise, leave the checkbox to export all the data in the object.
  9. Click OK to start the export process.

If a file with a similar name exists, you can select whether Access should overwrite it or not. Select Yes to overwrite the file, or No to choose a new name for your file in the pop-up.

By default, Access will create a Microsoft Word Rich Text Format file with an RTF extension. To add your Access data to a Word document, follow these steps:

  1. Open the RTF document.
  2. Copy all the contents of the document.
  3. Paste the data in your Word document.

If you find the Export—RTF File export wizard tool tedious to use, there’s an easier way out. Copy data from your Access table, query, form, or report and paste it directly into your Word document.

Export Access Data to Word Without Hassle

Databases are a great way to store data. If you need to export your Access data to other apps like Word or Excel, the built-in Export—RTF File Wizard makes the whole process seamless, albeit with some limitations.

If you have extensive data to work with, Access forms offer a more powerful way to add more data to your database. They are easier to work with when editing tables and adding more data.

Понравилась статья? Поделить с друзьями:
  • Word replacements for but
  • Word replacement for you
  • Word replacement for but
  • Word replace words with other
  • Word replace text as you type