Access экспорт отчета excel

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

В этой статье

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

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

  • Выполнение экспорта

  • Что еще важно знать об экспорте

  • Решение проблем, связанных с отсутствующими и неверными значениями

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

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

Стандартные сценарии экспорта данных в Excel

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

  • Вы используете Access, но ваш руководитель предпочитает работать с данными в Excel. Вам приходится регулярно копировать данные в Excel, но вам хотелось бы автоматизировать этот процесс ради экономии времени.

Об экспорте данных в Excel

  • В приложении Access нет команды «Сохранить как” с возможностью сохранения данных в формате Excel. Чтобы скопировать данные в Excel, необходимо воспользоваться функций экспорта, описанной в этой статье, либо скопировать данные Access в буфер обмена, а затем вставить их в таблицу Excel.

  • Можно экспортировать таблицу, запрос, форму или отчет, а также отдельные записи в представлении.

  • В приложении Microsoft Excel есть команда импорта данных из базы данных Access. Ее можно использовать вместо команды экспорта Access, однако с помощью команды импорта в Excel можно импортировать только таблицы и запросы. Дополнительные сведения см. в разделе справки Excel Подключение к внешним данных и их импорт.

  • Экспортировать макросы и модули нельзя. При экспорте формы, отчета или таблицы с подчиненными формами, отчетами или таблицами экспортируется только главная форма, отчет или таблица. Все подчиненные формы, отчеты и таблицы следует экспортировать в Excel отдельно.

  • В ходе операции экспорта можно экспортировать лишь один объект базы данных. Однако после нескольких операций экспорта можно выполнить в Excel слияние нескольких листов.

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

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

Прежде чем выполнять операцию экспорта, следует проверить данные, которые будут экспортироваться, на предмет сообщений об ошибках и ошибочных значений. Ошибки рекомендуется устранить до экспорта данных в Excel. В противном случае в ходе экспорта могут возникнуть неполадки, а в ячейки листа Excel могут быть вставлены пустые значения. Дополнительные сведения о проблемах, которые могут возникнуть при экспорте данных в Excel, см. в разделе Решение проблем, связанных с отсутствующими и неверными значениями.

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

Экспорт

Исходный объект

Поля и записи

Форматирование

Без форматирования

Таблица или запрос

Примечание:  Формы и отчеты невозможно экспортировать без форматирования.

Экспортируются все поля и записи базового объекта.

Параметры свойства «Формат» пропускаются в ходе операции.

Для полей подстановки экспортируются только значения кодов подстановки.

Содержимое полей гиперссылок экспортируется в виде столбца текста, в котором ссылки отображаются в формате отображаемый_текст#адрес#.

С форматированием

Таблица, запрос, отчет или форма

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

В мастере соблюдаются параметры свойства «Формат».

В случае полей подстановки экспортируются значения подстановки.

При экспорте полей гиперссылок значения экспортируются в виде гиперссылок.

При экспорте полей форматированного текста текст экспортируется без форматирования.

  1. Выберите целевую книгу и ее формат. Имейте в виду, что отчеты можно экспортировать только в более старом формате XLS (но не в формате XLSX).

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

Целевая книга

Исходный объект

Экспортируемые данные

Результат

Не существует

Таблица, запрос, отчет или форма

Данные с форматированием или без него

В ходе операции экспорта создается книга.

Существует

Таблица или запрос

Данные без форматирования

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

Существует

Таблица, запрос, отчет или форма

Данные с форматированием

Файл перезаписывается экспортируемыми данными. Все имеющиеся листы удаляются, и создается новый лист с именем экспортируемого объекта. Данные листа Excel наследуют параметры форматирования исходного объекта.

Данные всегда добавляются в новый лист. Невозможно добавить данные в имеющийся лист или именованный диапазон.

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

Выполнение экспорта

  1. Если целевая книга Excel открыта, закройте ее перед выполнением операции.

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

    Экспорт только части данных

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

    Открытие формы в режиме таблицы    

    1. Чтобы открыть форму, дважды щелкните ее.

    2. Щелкните форму правой кнопкой мыши, а затем щелкните элемент Режим таблицы. Если он недоступен, выполните действия, описанные ниже.

      1. Выберите пункт Режим конструктора.

      2. Нажмите клавишу F4, чтобы отобразить панель задач «Страница свойств».

      3. В раскрывающемся списке в верхней части этой панели выберите пункт Форма.

      4. На вкладке «Формат» панели «Страница свойств» установите значение Да для свойства Режим таблицы.

      5. На вкладке Конструктор в группе Представления выберите пункт Режим таблицы.

        Примечание:  Часть отчета экспортировать нельзя. Однако можно выбрать или открыть таблицу или запрос, на которых основан отчет, и затем экспортировать часть данных в этот объект.

  3. На вкладке Внешние данные в группе Экспорт нажмите кнопку Excel.

  4. В диалоговом окне Экспорт — Электронная таблица Excel просмотрите предлагаемые имена файлов рабочей книги Excel (Access использует имена исходных объектов). При необходимости имя файла можно изменить.

  5. В поле Формат файла выберите нужный формат файла.

  6. Если при экспорте таблицы или запроса требуется сохранить форматирование данных, установите флажок Экспортировать данные с макетом и форматированием. Дополнительные сведения см. в разделе Подготовка к операции экспорта.

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

  7. Чтобы просмотреть конечный файл Excel после завершения операции экспорта, установите флажок Открыть целевой файл после завершения операции экспорта.

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

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

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

    Если в ходе экспорта возникает ошибка, в Access отображается сообщение с описанием ее причины. В противном случае приложение Access экспортирует данные и в соответствии с параметрами, выбранными на этапе 7, открывает либо не открывает целевую книгу в Excel. Затем в Access открывается диалоговое окно, в котором можно создать спецификацию со сведениями об экспорте.

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

Что еще важно знать об экспорте

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

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

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

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

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

Решение проблем, связанных с отсутствующими и неверными значениями

В приведенной ниже таблице описаны различные способы устранения типичных ошибок.

Совет:  Если отсутствует всего несколько значений, введите их в книгу Excel самостоятельно, в противном случае исправьте исходный объект в базе данных Access и повторите экспорт.

Источник проблемы

Описание и решение

Вычисляемые поля

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

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

Многозначные поля экспортируются в виде списка значений, разделенных точками с запятой (;).

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

Графические элементы (например, эмблемы, содержимое полей объектов OLE и вложения, которые содержатся в исходных данных) не экспортируются. Их следует добавить на лист вручную после завершения операции экспорта.

График

При экспорте формы или отчета, содержащих объект Microsoft Graph, он не экспортируется.

Данные в неверном столбце

Значения Null на целевом листе иногда заменяются данными, которые должны находиться в следующем столбце.

Отсутствующие значения даты

Значения дат, предшествующих 1 января 1900 г., не экспортируются. Соответствующие ячейки на листе содержат значения Null.

Отсутствующие выражения

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

Отсутствующие подчиненные формы, отчеты и таблицы

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

Отсутствующие или неправильно отформатированные столбцы

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

Форматирование столбца в Excel

  1. Откройте целевую книгу Excel и перейдите на лист с экспортированными данными.

  2. Щелкните нужный столбец или выделенный диапазон ячеек правой кнопкой мыши и выберите пункт Формат ячеек.

  3. На вкладке Число в группе Числовые форматы выберите нужный формат, например Текстовый, Числовой, Дата или Время.

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

Значение «#» в столбце

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

Индикаторы или значения ошибки

Проверьте ячейки на наличие индикаторов ошибки (треугольников зеленого цвета в углу ячеек) или значений ошибки (строк, которые начинаются со знака #, а не с нужных данных).

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

One of the prime attractions of Microsoft Office Suite is the ability to transfer and convert data for use in each of the different programs that comprise the overall package. Small business users who prefer the convenience of Excel tables when it comes to anything from sales data to customer records can easily convert reports generated by Access to Excel tables with an automated feature in Access.

  1. Open your Access database.

  2. Generate the report you need from your database by clicking its name in the lower left-hand column of your database under «Reports.» The report appears on your screen.

  3. Click the «External Data» tab from the Access Ribbon along the top of the window and then click the Excel icon, which is the second from the left in the Export group of the External Data menu. Wait for the «Export — Excel Spreadsheet» dialog box to open.

  4. Click the «Browse» button at the end of the «File name: text» field in the dialog box. Wait for the File Save dialog box to appear.

  5. Select the drive and folder to which you want to save the Excel spreadsheet version of the report. Type the name under which you want to save the file in the «File name: text» field of the File Save dialog box and then click the «Save» button.

  6. Select the particular Excel format in which you want to save your spreadsheet using the File format pull-down menu in the Export — Excel Spreadsheet dialog box.

  7. Make sure the box next to «Export data with formatting and layout,» which is usually the default option, is checked for the best results.

  8. Click the «Save» button at the bottom of the dialog box to return to the main box. Check the box to the left of «Open the destination file after the export operation is complete» if you want to work on your Excel file as soon as you export your data.

  9. Check the box to the left of «Export only the selected records» if you set up your report using only specified records. This box usually cannot be selected unless you have generated a particular custom report using only specific records from your database.

  10. Click the «OK» button at the bottom of the dialog box.

  11. Check the «Save export steps» box in the dialog box if you want to save your export steps for future use. Enter a name and description as you wish and click the «Save Export» button.

  12. Wait for your Excel spreadsheet to open in another window if you checked the pertinent box in Step 8. Open Excel and browse for the spreadsheet by name if you did not check the box.

  13. Work on your Excel spreadsheet as you would any other spreadsheet but pay attention to dialog boxes that will ask you whether you want to change data from your Access report.

0 / 0 / 0

Регистрация: 24.03.2014

Сообщений: 42

1

24.03.2014, 09:40. Показов 13512. Ответов 25


Студворк — интернет-сервис помощи студентам

Доброго времени суток!

Задача
Нужно из Access экспортировать отчет в Excel, содержащий несколько полей из одной (главной) таблицы и несколько из другой таблицы со связью многие ко многим (конкретно в моем случае, у одной организации может быть несколько сфер деятельности). Нужно это корректно отобразить в excel в виде списка, то есть поле — значение вот так:

Adress

____119991, Москва, Ленинские горы, дом 1
Industry___Информационные и коммуникационные технологии
__________Медицина, фармацевтика и биотехнологи
__________Энергоэффективность и энергосбережение

Спасибо!



0



Agapov_stas

3353 / 1771 / 83

Регистрация: 05.08.2010

Сообщений: 4,471

24.03.2014, 10:27

2

Если именно отчет, то:

Visual Basic
1
DoCmd.OutputTo acOutputReport, "Отчет", acFormatXLS, "Имя выходного файла", True

Если данные сразу из таблицы/запроса, то используйте CopyFromRecordset.



1



0 / 0 / 0

Регистрация: 24.03.2014

Сообщений: 42

24.03.2014, 11:28

 [ТС]

3

Цитата
Сообщение от Agapov_stas
Посмотреть сообщение

Если данные сразу из таблицы/запроса, то используйте CopyFromRecordset.

Подскажите пожалуйста как пользоваться методом CopyFromRecordset? Сильно не пинайте — я пока еще совсем зеленый…



0



Agapov_stas

3353 / 1771 / 83

Регистрация: 05.08.2010

Сообщений: 4,471

24.03.2014, 11:38

4

Цитата
Сообщение от funtik_137
Посмотреть сообщение

Подскажите пожалуйста как пользоваться методом CopyFromRecordset?

Допустим есть таблица(или запрос) «Таблица».

Visual Basic
1
2
3
4
5
6
7
8
9
10
Dim exApp As Object, rs As Object
Set exApp = CreateObject("Excel.application")
 
exApp.Workbooks.Add
exApp.Visible = True
Set rs = CurrentDb.OpenRecordset("Таблица")
exApp.Range("A1").CopyFromRecordset rs
 
Set exApp = Nothing
Set rs = Nothing



1



0 / 0 / 0

Регистрация: 24.03.2014

Сообщений: 42

24.03.2014, 12:40

 [ТС]

5

1. Может так будет понятнее проблема — в таком виде отчет криво экспортируется в Excel: http://yadi.sk/d/d0sjGODiL6jch (как бы я не игрался с конструктором).
2. Куда и как вводить код VB??



0



3353 / 1771 / 83

Регистрация: 05.08.2010

Сообщений: 4,471

24.03.2014, 12:44

6

Цитата
Сообщение от funtik_137
Посмотреть сообщение

Куда вводить код VB??

В модуль формы. Ну или в общем модуле и вызывать функцию.
Проще было бы помочь, если бы Вы показали пример(достаточно таблицы/запроса одной, на которой основан отчет Ваш).ъ

Не по теме:

Вообще-то на форуме не приветствуются файлопомойники внешние ссылки, выкладывайте файлы здесь.



1



0 / 0 / 0

Регистрация: 24.03.2014

Сообщений: 42

24.03.2014, 13:13

 [ТС]

7

В отчете, который будет потом в excel импортироваться несколько полей из таблицы «Организации» и одно поле из таблицы Сфера деятельности (Industries) (связь много — многозначная). Может это и через форму можно сделать, а не отчетом.

Во вложении: Схема данных, главная таблица(организации) и таблица Industries.



0



3353 / 1771 / 83

Регистрация: 05.08.2010

Сообщений: 4,471

24.03.2014, 13:31

8

Цитата
Сообщение от funtik_137
Посмотреть сообщение

несколько полей из таблицы «Организации» и одно поле из таблицы Сфера деятельности (Industries) (связь много — многозначная).

Сделайте запрос, включающий эти поля, и в рекордсете открывайте его(или строку запроса используйте сразу).



1



0 / 0 / 0

Регистрация: 24.03.2014

Сообщений: 42

24.03.2014, 13:55

 [ТС]

9

Agapov_stas, сделал запрос, в поле industries отражает только одну сферу деятельности (первую) и дублирует организации столько раз, сколько сфер деятельности у каждой из них.

Миниатюры

Экспорт отчета из access в excel
 



0



Модератор

Эксперт MS Access

11336 / 4655 / 748

Регистрация: 07.08.2010

Сообщений: 13,484

Записей в блоге: 4

24.03.2014, 14:05

10

похоже связи неправильно установлены



0



3353 / 1771 / 83

Регистрация: 05.08.2010

Сообщений: 4,471

24.03.2014, 14:10

11

Цитата
Сообщение от funtik_137
Посмотреть сообщение

и дублирует организации столько раз, сколько сфер деятельности у каждой из них.

Ну так выходит из Вашей схемы(связь многие-ко-многим). У одной организации несколько сфер деятельности. Как вариант перечислять их через запятую при выгрузке в Excel.



1



0 / 0 / 0

Регистрация: 24.03.2014

Сообщений: 42

24.03.2014, 14:14

 [ТС]

12

Цитата
Сообщение от Agapov_stas
Посмотреть сообщение

перечислять их через запятую при выгрузке в Excel

тогда можно сделать, чтобы так импортировалось:

Adress____119991, Москва, Ленинские горы, дом 1
Industry___Информационные и коммуникационные технологии, Медицина, фармацевтика и биотехнологи, Энергоэффективность и энергосбережение



0



0 / 0 / 0

Регистрация: 24.03.2014

Сообщений: 42

24.03.2014, 14:34

 [ТС]

13

Цитата
Сообщение от Agapov_stas
Посмотреть сообщение

Если именно отчет, то:
Код Visual Basic
1
DoCmd.OutputTo acOutputReport, «Отчет», acFormatXLS, «Имя выходного файла», True
Если данные сразу из таблицы/запроса, то используйте CopyFromRecordset.

1. Получается через запрос не могу задачу выполнить, так как связь много-многозначная с таблицей Industries.
2. Через отчет вид меня почти устраивает(вложение), вопрос только с импортом в должном виде.

В таком случае пользуюсь этим кодом «DoCmd.OutputTo acOutputReport, «Отчет», acFormatXLS, «Имя выходного файла», True» ?? Можно немного поподробнее с кодом…

Миниатюры

Экспорт отчета из access в excel
 



0



0 / 0 / 0

Регистрация: 24.03.2014

Сообщений: 42

24.03.2014, 14:56

 [ТС]

14

Цитата
Сообщение от Agapov_stas
Посмотреть сообщение

Код Visual Basic
1
DoCmd.OutputTo acOutputReport, «Отчет», acFormatXLS, «Имя выходного файла», True

Открыл модуль, вставил код, переименовал на наименование своего отчета — нажимаю RUN и выскакивает следующая таблица:

Миниатюры

Экспорт отчета из access в excel
 



0



Agapov_stas

3353 / 1771 / 83

Регистрация: 05.08.2010

Сообщений: 4,471

24.03.2014, 15:00

15

Цитата
Сообщение от funtik_137
Посмотреть сообщение

тогда можно сделать, чтобы так импортировалось:
Adress____119991, Москва, Ленинские горы, дом 1
Industry___Информационные и коммуникационные технологии, Медицина, фармацевтика и биотехнологи, Энергоэффективность и энергосбережение

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

Это в общий модуль:

Кликните здесь для просмотра всего текста

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Public Function ConcatFld(id_org As Integer) As String
Dim strSQL As String, rs As Object
strSQL = "Select Industries.Industry From Industries INNER JOIN Industries_Organizations ON Industries.[Код]=Industries_Organizations.Industry Where Organization=" & id_org
Set rs = CurrentDb.OpenRecordset(strSQL)
 
ConcatFld = ","
rs.MoveFirst
Do While Not rs.EOF
   ConcatFld = ConcatFld & "," & rs!Industry
   rs.MoveNext
Loop
ConcatFld = Right(ConcatFld, Len(ConcatFld) - 2)
Set rs = Nothing
End Function

В запросе использовать:

SQL
1
SELECT Adress, ConcatFld(OrganizationID) AS [Сферы] FROM Organizations

Ну и выводить в Excel уже этот запрос.



1



0 / 0 / 0

Регистрация: 24.03.2014

Сообщений: 42

24.03.2014, 15:13

 [ТС]

16

Цитата
Сообщение от Agapov_stas
Посмотреть сообщение

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

очень много организаций в таблице.

Agapov_stas, подскажите пожалуйста, как этим «DoCmd.OutputTo acOutputReport, «Отчет», acFormatXLS, «Имя выходного файла», True» кодом воспользоваться для импорта в Excel в виде списка (поле-значение). Что делать с этой табличкой «Macros», всплывающей при нажатии кнопки RUN?



0



Agapov_stas

3353 / 1771 / 83

Регистрация: 05.08.2010

Сообщений: 4,471

24.03.2014, 15:20

17

Цитата
Сообщение от funtik_137
Посмотреть сообщение

очень много организаций в таблице.

И что с того?

Цитата
Сообщение от funtik_137
Посмотреть сообщение

воспользоваться для импорта в Excel в виде списка (поле-значение).

Никак (вроде).

Повторюсь, выложите пример БД в виде тех трех табличек (можно без записей). На нем проще показать, если не понимаете о чем речь.

Добавлено через 1 минуту

Цитата
Сообщение от funtik_137
Посмотреть сообщение

очень много организаций в таблице.

Кстати, только вспомнил, если не указана сфера у организации, необходимо еще добавить условие в функции:

Visual Basic
1
If rs.BOF Then ConcatFld = "": Exit Function



1



0 / 0 / 0

Регистрация: 24.03.2014

Сообщений: 42

24.03.2014, 15:44

 [ТС]

18

Цитата
Сообщение от Agapov_stas
Посмотреть сообщение

Повторюсь, выложите пример БД в виде тех трех табличек (можно без записей). На нем проще показать, если не понимаете о чем речь.

Думаю проще будет всю БД показать.



0



3353 / 1771 / 83

Регистрация: 05.08.2010

Сообщений: 4,471

24.03.2014, 15:46

19

Цитата
Сообщение от funtik_137
Посмотреть сообщение

Думаю проще будет всю БД показать.

Да, только нормальный файл, а не битый.



1



0 / 0 / 0

Регистрация: 24.03.2014

Сообщений: 42

24.03.2014, 15:51

 [ТС]

20

Цитата
Сообщение от Agapov_stas
Посмотреть сообщение

Сообщение от funtik_137
Думаю проще будет всю БД показать.
Да, только нормальный файл, а не битый.

У меня открывается, перезалил все равно.



0



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

Выполните следующие действия, чтобы экспортировать базу данных Access в Excel:

  1. Откройте файл базы данных Access.
  2. Перейдите на вкладку «Внешние данные».
  3. Нажмите кнопку Excel в группе Экспорт.
  4. Щелкните Обзор.
  5. Назовите файл, выберите папку для сохранения файла экспорта и нажмите «Сохранить».
  6. Нажмите «ОК».
  7. Нажмите кнопку Закрыть.
  8. Найдите и откройте файл.

Откройте файл базы данных Access.

Перейдите на вкладку «Внешние данные».

Нажмите на Excel кнопка в Экспорт группа.

Как экспортировать данные из Access в Excel

Откроется диалоговое окно мастера «Экспорт — электронная таблица Excel».

Нажмите на Просматривать кнопка.

Откроется диалоговое окно сохранения файла.

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

Вернувшись в диалоговое окно мастера «Экспорт — таблица Excel», нажмите ХОРОШО.

Затем закройте диалоговое окно

Найдите файл, который вы экспортировали в Excel, и откройте его (это файл Excel).

Можете ли вы скопировать базу данных Access?

Да, вы можете скопировать базу данных Access в другую папку. Откройте папку, содержащую базу данных Access, которую вы хотите скопировать. Щелкните правой кнопкой мыши файл базы данных Access и выберите «Копировать» в контекстном меню. Перейдите в папку, в которую вы хотите вставить базу данных Access; щелкните правой кнопкой мыши и выберите «Вставить» в контекстном меню.

Читайте: Как создавать таблицы с помощью конструктора таблиц в Access

Какие типы файлов вы можете экспортировать в Access?

В Access вы можете экспортировать данные из Access в различных форматах, таких как список Excel, Word и SharePoint. Экспорт базы данных Access в Excel приведет к экспорту объекта на рабочий лист в файле Excel. При экспорте базы данных Access в Word выбранный объект будет экспортирован в форматированный текст. Экспорт базы данных Access в SharePoint приведет к экспорту выбранного объекта в SharePoint в виде списка.

Читайте: Как вставить файл PDF в лист Excel

Как экспортировать данные из Access в Excel более 65000 строк?

Чтобы экспортировать данные Access, содержащие более 65 000 строк с форматированием и макетом, вам потребуется настроить запрос на экспорт 65 000 строк за раз в отдельные электронные таблицы. После этого вам нужно скопировать и вставить их вместе в одну таблицу.

Мы надеемся, что это руководство поможет вам понять, как экспортировать базу данных Access в Excel.

Всем привет, сегодня мы поговорим о том, как можно выгрузить данные из 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 использовал позднее связывание, для того чтобы не добавлять необходимые библиотеки и обеспечить совместимость.

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

Like this post? Please share to your friends:
  • Access самоучитель скачать в word
  • Access открыть файл excel макросом
  • Access не открывает файл excel
  • Access заполнение шаблона word
  • Access выгрузка запроса в excel