С помощью мастера экспорта можно экспортировать данные из базы данных 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, см. в разделе Решение проблем, связанных с отсутствующими и неверными значениями.
Если исходным объектом является таблица или запрос, определите, как требуется экспортировать данные: с сохранением форматирования или без него. Выбранный способ экспорта влияет на два аспекта целевого файла: объем экспортируемых данных и формат их отображения. В приведенной ниже таблице представлены результаты экспорта форматированных и неформатированных данных.
Экспорт |
Исходный объект |
Поля и записи |
Форматирование |
Без форматирования |
Таблица или запрос Примечание: Формы и отчеты невозможно экспортировать без форматирования. |
Экспортируются все поля и записи базового объекта. |
Параметры свойства «Формат» пропускаются в ходе операции. Для полей подстановки экспортируются только значения кодов подстановки. Содержимое полей гиперссылок экспортируется в виде столбца текста, в котором ссылки отображаются в формате отображаемый_текст#адрес#. |
С форматированием |
Таблица, запрос, отчет или форма |
Экспортируются только поля и записи, отображаемые в текущем представлении или объекте. Фильтрованные записи, скрытые столбцы таблицы, а также не отображаемые в форме или отчете поля не экспортируются. |
В мастере соблюдаются параметры свойства «Формат». В случае полей подстановки экспортируются значения подстановки. При экспорте полей гиперссылок значения экспортируются в виде гиперссылок. При экспорте полей форматированного текста текст экспортируется без форматирования. |
-
Выберите целевую книгу и ее формат. Имейте в виду, что отчеты можно экспортировать только в более старом формате XLS (но не в формате XLSX).
В процессе экспорта Access предлагает указать имя конечной книги. В приведенной ниже таблице представлена сводка случаев создания новой книги или перезаписи имеющейся.
Целевая книга |
Исходный объект |
Экспортируемые данные |
Результат |
Не существует |
Таблица, запрос, отчет или форма |
Данные с форматированием или без него |
В ходе операции экспорта создается книга. |
Существует |
Таблица или запрос |
Данные без форматирования |
Файл не перезаписывается. В книгу добавляется новый лист, которому присваивается имя объекта, из которого экспортируются данные. Если лист с таким именем уже существует, Access предлагает либо заменить содержимое соответствующего листа, либо указать другое имя нового листа. |
Существует |
Таблица, запрос, отчет или форма |
Данные с форматированием |
Файл перезаписывается экспортируемыми данными. Все имеющиеся листы удаляются, и создается новый лист с именем экспортируемого объекта. Данные листа Excel наследуют параметры форматирования исходного объекта. |
Данные всегда добавляются в новый лист. Невозможно добавить данные в имеющийся лист или именованный диапазон.
К началу страницы
Выполнение экспорта
-
Если целевая книга Excel открыта, закройте ее перед выполнением операции.
-
На панели навигации исходной базы данных выберите объект, который требуется экспортировать.
Экспорт только части данных
Если объектом является таблица, запрос или форма и требуется экспортировать только часть данных, откройте объект в режиме таблицы и выберите необходимые записи.
Открытие формы в режиме таблицы
-
Чтобы открыть форму, дважды щелкните ее.
-
Щелкните форму правой кнопкой мыши, а затем щелкните элемент Режим таблицы. Если он недоступен, выполните действия, описанные ниже.
-
Выберите пункт Режим конструктора.
-
Нажмите клавишу F4, чтобы отобразить панель задач «Страница свойств».
-
В раскрывающемся списке в верхней части этой панели выберите пункт Форма.
-
На вкладке «Формат» панели «Страница свойств» установите значение Да для свойства Режим таблицы.
-
На вкладке Конструктор в группе Представления выберите пункт Режим таблицы.
Примечание: Часть отчета экспортировать нельзя. Однако можно выбрать или открыть таблицу или запрос, на которых основан отчет, и затем экспортировать часть данных в этот объект.
-
-
-
На вкладке Внешние данные в группе Экспорт нажмите кнопку Excel.
-
В диалоговом окне Экспорт — Электронная таблица Excel просмотрите предлагаемые имена файлов рабочей книги Excel (Access использует имена исходных объектов). При необходимости имя файла можно изменить.
-
В поле Формат файла выберите нужный формат файла.
-
Если при экспорте таблицы или запроса требуется сохранить форматирование данных, установите флажок Экспортировать данные с макетом и форматированием. Дополнительные сведения см. в разделе Подготовка к операции экспорта.
Примечание: При экспорте формы или отчета этот флажок установлен по умолчанию и недоступен для изменения.
-
Чтобы просмотреть конечный файл Excel после завершения операции экспорта, установите флажок Открыть целевой файл после завершения операции экспорта.
Если исходный объект был открыт и одна или несколько записей для экспорта выделены до запуска операции, можно установить флажок Экспортировать только выбранные записи. Если требуется экспортировать все отображаемые записи, этот флажок необходимо снять.
Примечание: Если записи не выделены, этот флажок недоступен (неактивен).
-
Нажмите кнопку ОК.
Если в ходе экспорта возникает ошибка, в Access отображается сообщение с описанием ее причины. В противном случае приложение Access экспортирует данные и в соответствии с параметрами, выбранными на этапе 7, открывает либо не открывает целевую книгу в Excel. Затем в Access открывается диалоговое окно, в котором можно создать спецификацию со сведениями об экспорте.
К началу страницы
Что еще важно знать об экспорте
-
Сведения о том, как сохранить сведения об экспорте в виде спецификации, которую можно использовать повторно, см. в статье Сохранение параметров операции импорта или экспорта в виде спецификации.
-
Дополнительные сведения о запуске спецификаций см. в статье Выполнение сохраненной операции импорта или экспорта.
-
Дополнительные сведения о запуске спецификаций в определенное время см. в статье Планирование импорта или экспорта.
-
Сведения о том, как изменить имя спецификации, удалить ее или обновить имена исходных файлов, см. в статье Задачи управления данными.
К началу страницы
Решение проблем, связанных с отсутствующими и неверными значениями
В приведенной ниже таблице описаны различные способы устранения типичных ошибок.
Совет: Если отсутствует всего несколько значений, введите их в книгу Excel самостоятельно, в противном случае исправьте исходный объект в базе данных Access и повторите экспорт.
Источник проблемы |
Описание и решение |
Вычисляемые поля |
Экспортируются результаты вычисляемых полей; выражения, на основе которых производится вычисление, не экспортируются. |
Многозначные поля |
Многозначные поля экспортируются в виде списка значений, разделенных точками с запятой (;). |
Рисунки, объекты и вложения |
Графические элементы (например, эмблемы, содержимое полей объектов OLE и вложения, которые содержатся в исходных данных) не экспортируются. Их следует добавить на лист вручную после завершения операции экспорта. |
График |
При экспорте формы или отчета, содержащих объект Microsoft Graph, он не экспортируется. |
Данные в неверном столбце |
Значения Null на целевом листе иногда заменяются данными, которые должны находиться в следующем столбце. |
Отсутствующие значения даты |
Значения дат, предшествующих 1 января 1900 г., не экспортируются. Соответствующие ячейки на листе содержат значения Null. |
Отсутствующие выражения |
Выражения, которые используются для вычислений, не экспортируются в Excel. Экспортируются только результаты вычислений. Формулу следует добавить в рабочий лист Excel вручную после завершения операции экспорта. |
Отсутствующие подчиненные формы, отчеты и таблицы |
При экспорте формы, отчета или таблицы экспортируется только главная форма, отчет или таблица. Необходимо повторить операцию экспорта для всех подчиненных форм, отчетов и таблиц, которые требуется экспортировать. |
Отсутствующие или неправильно отформатированные столбцы |
Если ни один из столбцов на конечном листе не отформатирован, повторите операцию экспорта, установив флажок Экспортировать данные с макетом и форматированием в мастере. Если же только некоторые столбцы имеют форматирование, отличное от исходного, выполните нужные действия в Excel вручную. Форматирование столбца в Excel
|
Значение «#» в столбце |
Значение # может содержаться в столбце, который соответствует логическому полю формы. Это может быть результатом запуска операции экспорта из области переходов или режима формы. Чтобы устранить эту ошибку, откройте форму в режиме таблицы, прежде чем экспортировать данные. |
Индикаторы или значения ошибки |
Проверьте ячейки на наличие индикаторов ошибки (треугольников зеленого цвета в углу ячеек) или значений ошибки (строк, которые начинаются со знака #, а не с нужных данных). |
К началу страницы
Знаете ли вы, что вы можете экспортировать базу данных Access на лист Excel? В Microsoft Excel есть функции для импорта или экспорта данных из листа Excel или в него. При экспорте данных в Excel Access создает копию выбранных данных, а затем сохраняет скопированные данные в файле, который можно открыть в Microsoft Excel. В Access можно экспортировать таблицы, запросы, формы и отчеты, но нельзя экспортировать макросы или модули в Excel. При экспорте форм, отчетов или таблиц, содержащих подчиненные формы, подотчеты и подтаблицы, экспортируется только основная форма, отчет или таблица.
Выполните следующие действия, чтобы экспортировать базу данных Access в Excel:
- Откройте файл базы данных 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.
JeyCi Пользователь Сообщений: 3357 |
господа, прошу не судить строго — пишу, потому что была Очень поражена гениальностью и простотой Данного решения! Record Keeping from Excel to Access — суть Идеи до боли проста — вводим данные по мере надобности в Excel — и всё автоматом закидываем в Базу Данных Access , — пример, как настроить такой милый душе автомат, там есть по линку… СОВСЕМ НЕ НАДО никаких Форм для ввода создавать своими ручками — всё уже давно создано программистами Microsoft !! — т.е. сам Excel !! который может послужить достойным прототипом любой рукодельной Формы для ввода данных в Access… по крайней мере на ячейки уже расчерчен сам — вводи что хочешь, куда хочешь… только прежде настрой, как нравится — что куда кидать потом… Изменено: JeyCi — 12.10.2016 20:30:33 чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок — обратитесь к собеседнику на ВЫ — ответ на ваш вопрос получите — а остальное вас не касается (п.п.п. на форумах) |
JayBhagavan Пользователь Сообщений: 11833 ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64 |
JeyCi, спасибо за предоставленную информацию. Изменено: JayBhagavan — 31.07.2015 11:46:26 <#0> |
JeyCi Пользователь Сообщений: 3357 |
… если путь (на вашем компе!! к файлу базы прописан верно) — то, наверно, причина может быть, что вы пытаетесь подконнектиться к базе, которая открыта в Access (т.е. если у вас файл mdb открыт —>доступ 2-го юзера блокируется) — наверно, в таком случае может быть глюк… у меня коннектится и загоняется инфо в базу ок (даже не смотря на то, что у меня 2010, а файл пример для 2003)… — кнопкой Save Изменено: JeyCi — 31.07.2015 11:48:50 чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок — обратитесь к собеседнику на ВЫ — ответ на ваш вопрос получите — а остальное вас не касается (п.п.п. на форумах) |
JayBhagavan Пользователь Сообщений: 11833 ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64 |
JeyCi, спасибо за ответ. Дело было в провайдере. <#0> |
Johny Пользователь Сообщений: 2737 |
JeyCi
, Вы ещё пользуетесь Access? There is no knowledge that is not power |
Я до сих пор использую Access. Причем — именно в связке с excel. Уверен, что SQL Server — гораздо более крутая программа, чем ACCESS. Ну, примерно — как самолет и авто сравнивать. Но самолет я водить не умею, а чтобы научиться — нужны деньги и время (как известно — вещи взаимосвязанные)… да и так далеко ездить не приходится. А также нет аэродрома, ангара, авиационного топлива… Вот по этой же аналогии я, например, пользуюсь access. Всё сложное — не нужно. Всё нужное — просто /М. Т. Калашников/ |
|
JeyCi Пользователь Сообщений: 3357 |
#7 31.07.2015 21:01:10 я ещё верю, что можно, не усложнять… — там, где можно без этого обойтись… особенно если (согласна с Михаилом)
… и в Access иногда можно поковырять запросы, чтобы их потом вставить в MS Query (xl)… Конструктор в Access более полноценный (на всякий случай)… Использование Microsoft Query P.S. Разместить на хостинге sql базу и с нее получать данные на лист (MySQL)… Пару слов. Изменено: JeyCi — 14.09.2016 19:01:53 чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок — обратитесь к собеседнику на ВЫ — ответ на ваш вопрос получите — а остальное вас не касается (п.п.п. на форумах) |
||
Johny Пользователь Сообщений: 2737 |
#8 01.08.2015 00:29:28
Гораздо более, конечно, но ведь всё дело в результате — так? Стоит ли игра свеч? Окупятся ли затраты при изучении более мощного движка? Просто сегодня не нужно, а завтра — позарез. Так что я думаю, что стОит потратить время. There is no knowledge that is not power |
||
Чего нет в ексель, но есть в акцесс: Ушел… Всё сложное — не нужно. Всё нужное — просто /М. Т. Калашников/ |
|
JeyCi, спасибо, возможно когда нибудь пригодится. |
|
Чего нет в ексель, но есть в акцесс -2 (продолжение сообщения от 1 Авг 2015 11:24:56): Чего нет в акцесс, но есть в ексель: Поэтому для меня акцесс — это система для сбора и хранения данных, одновременного доступа к ним, а ексель — система обработки этих данных и их анализа. Изменено: Михаил Лебедев — 08.08.2015 20:46:08 Всё сложное — не нужно. Всё нужное — просто /М. Т. Калашников/ |
|
Максим Зеленский Пользователь Сообщений: 4646 Microsoft MVP |
#12 03.08.2015 12:51:37
плюс Power Query и Power BI (последнего зверя еще не щупал, но уже на слуху). А по поводу связки Excel и Acccess — недавно поднимал как раз тему работы с базами Access из Excel F1 творит чудеса |
||
Михаил Лебедев Пользователь Сообщений: 2856 |
#13 03.08.2015 13:20:02
Да, про этого зверька (я имею в виду просто Query) — я забыл сказать как про мощный инструмент для связывания Ассess и Еxcel. Если он сейчас станет сильнее — т.е. будут доработаны слабые места — это… в общем, это здОрово ☺ Всё сложное — не нужно. Всё нужное — просто /М. Т. Калашников/ |
||
Михаил Лебедев Пользователь Сообщений: 2856 |
#14 03.08.2015 13:26:52
обратил внимание, что добавление записей — происходит, а вот удаление внесенных ранее — нет. Кнопка «Удалить» удаляет запись только в текущих ячейках екселя. М.б. это только у меня так?… Изменено: Михаил Лебедев — 08.08.2015 20:47:32 Всё сложное — не нужно. Всё нужное — просто /М. Т. Калашников/ |
||
JeyCi Пользователь Сообщений: 3357 |
#15 03.08.2015 14:56:41
да, кстати, просмотрев код — видно использование Rst.AddNew, сюда — по возможностям др. методов для рекордсета, в т.ч., полагаю:
итог «творческой мысли» … — лежит в #121 это , полагаю, лучше принять к сведению
Изменено: JeyCi — 12.10.2016 20:29:08 чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок — обратитесь к собеседнику на ВЫ — ответ на ваш вопрос получите — а остальное вас не касается (п.п.п. на форумах) |
||||
JeyCi Пользователь Сообщений: 3357 |
#16 03.08.2015 15:19:20 примеры линковки Excel и Access тоже были на форуме: sql запрос — в Excel’е из Access запрос через строку подключения
— от B.Key (пост#30) — Excel: Использование Access для обработки больших текстовых файлов — линковка текст. файлов к Access, из которого потом то, что надо в Excel… и все нужные запросы на отбор и систематизацию данных можно настроить уже в Access (пользуясь его талантами), чтобы в Excel поступал лишь нужный итог… Избавиться от цикла в запросе — средствами ADO запрос к БД … и один интересный нюанс для Jet (для ACE, наверно, так же)
… к слову о неявном задании сортировки… Изменено: JeyCi — 08.08.2015 20:48:32 чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок — обратитесь к собеседнику на ВЫ — ответ на ваш вопрос получите — а остальное вас не касается (п.п.п. на форумах) |
||||
Pelena Пользователь Сообщений: 1416 |
#17 03.08.2015 16:59:01
Тем не менее Access позволяет использовать встроенные функции Excel в расчётах при подключении Microsoft Excel Object Library |
||
bedvit Пользователь Сообщений: 2477 Виталий |
К моему огромному сожалению Access так и остался на уровне 2003 офиса. Видимо Microsoft не посчитала нужным развивать этот продукт. Как СУБД для небольших баз данных, с не ресурсоёмкими запросами, VBA, совместимостью с продуктами Microsoft Office, простотой создания запросов (мастером) он хорош. До сих пор его используем. Но ограничение размера используемой памяти в 2Гб (причем это включая сис. таблицы и т.д., т.е. по факту ещё меньше) — это что-то (уровень 2003 года). Один этот параметр не позволяет не только нормально работать с базой .mdb, .accdb, но и писать более-менее ресурсоемкие запросы. «Бритва Оккама» или «Принцип Калашникова»? |
Johny Пользователь Сообщений: 2737 |
#19 04.08.2015 16:50:21
Там ещё и все индексы НЕкластерные. There is no knowledge that is not power |
||
bedvit Пользователь Сообщений: 2477 Виталий |
Johny, а поподробнее (индексация полей)? «Бритва Оккама» или «Принцип Калашникова»? |
Johny Пользователь Сообщений: 2737 |
Поподробнее… Можно загуглить. Хороший пример — книга. Обычно в конце книге есть глоссарий (указатель имён). В нём все слова отсортированы — это и есть некластерный индекс, отдельная структура. Как только мы нашли значение, мы видим страницу (Row Pointer), где находится искомое слово — и переходим на эту страницу. Переход — это наш Row Look-up. На самом деле, грамотно выбрать индексы — это целая наука. Учитывая, что Access не даёт такого анализа внутренней структуры, как, например, SQL Server, то трудно сказать, эффективны ли индексы в Access’е или нет. Но как можно уже догадаться, чем больше таблица, тем меннее эффективным становится некластерный индекс. Изменено: Johny — 04.08.2015 21:32:17 There is no knowledge that is not power |
Smiley Пользователь Сообщений: 530 |
Немного ОФФ. А можете посоветовать какие-нибудь книжки по Access 2010 и выше, а то все, что я читал, пишут сумбурно, перескакивая с одного на другое… Может канал какой хороший есть на Ютубе? спасибо. |
Максим Зеленский Пользователь Сообщений: 4646 Microsoft MVP |
#23 05.08.2015 11:02:16
Напомнило светлой памяти dBaseIII+ по имени РЕБУС или что-то в том же духе, типа первого FoxPro и Paradox… F1 творит чудеса |
||
Johny Пользователь Сообщений: 2737 |
#24 05.08.2015 12:27:52
Я русских книг не читал — только английские. Если знаете инглиш, то могу дать пару-тройку названий. There is no knowledge that is not power |
||
Smiley Пользователь Сообщений: 530 |
Johny, печаль. Английский знаю, но не технический, может быть очень сложно вникнуть. Книги, наверное, типа Гетца? Сейчас читал Гурвица, жесть какая-то… Постоянные перескоки… что? куда? не понятно же (с) Изменено: Smiley — 05.08.2015 12:45:27 |
Johny Пользователь Сообщений: 2737 |
Прочитав много книг на буржуйском, скажу, что некоторые авторы доходят до абсурда, описывая в целый параграф очевидные вещи. There is no knowledge that is not power |
Михаил Лебедев Пользователь Сообщений: 2856 |
#27 05.08.2015 17:05:45
К сожалению, стал даже хуже.Красивостей стало больше, а реально ценные возможности (защита на уровне пользователя, а не на уровне базы данных) — ампутировали.
Пробовал этим воспользоваться еще в бытность access 97. Тогда — жутко тормозил процесс при их использовании. Написанная UDF-ка работала гораздо быстрее. С тех пор — желание ими пользоваться ушло и больше не вернулось ☺ Еще про то, чего нет в access Всё сложное — не нужно. Всё нужное — просто /М. Т. Калашников/ |
||||
JeyCi Пользователь Сообщений: 3357 |
#28 05.08.2015 18:34:17
а так сразу и не скажешь — т.к. ещё не смотрела… спасибо! vbex.ru 2). Access Code Snippets 3). VBA Tips (что-то есть здесь) здесь — включая Полезные ссылки и как проявить ошибку в запросе ( который в xl или макросе с ado)
(действий много, но для учебных целей, ошибки запросов, визуализированные в Access, — более наглядны, т к более подробно Access скажет, где какая ошибка)… p.s. совсем для начинания: (- из excel’я) Excel VBA: как работать с базой данных Изменено: JeyCi — 09.08.2015 11:10:02 чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок — обратитесь к собеседнику на ВЫ — ответ на ваш вопрос получите — а остальное вас не касается (п.п.п. на форумах) |
||||
Михаил Лебедев Пользователь Сообщений: 2856 |
#29 05.08.2015 20:36:51
Книжки не посоветую, а вот форум, который мне в свое время очень помог, могу. http://hiprog.com/forum/ Всё сложное — не нужно. Всё нужное — просто /М. Т. Калашников/ |
||
Smiley Пользователь Сообщений: 530 |
#30 06.08.2015 10:10:07 Михаил Лебедев, доброе утро. Спасибо за информацию. Я вообще сейчас думаю, что его лучше подтянуть с помощью видеороликов Учусь программировать |
Отчет Access имеет известные достоинства, такие как простота формирования его структуры и
мощный аппарат компоновки исходных данных. Но есть и неудобства: пользователь для
изменения этого отчета должен вносить изменения в исходные данные базы, или, того хуже, обращаться к Разработчику для внесения поправок (напр. нужен раздел «Кому, от кого»).
Есть еще недостатки, описывать их, думаю, не стоит: понятно.
Предлагается решение:
- Создание локальной исходной таблицы — источника (t3_Sborka).
- Копирование исходных данных отчета в t3_Sborka с мин. преобразованием типов данных
(здесь в t3_Sborka данные сохраняются в поле формата STRING).
… и далее по F1: - Формирование на основе t3_Sborka перекрестного запроса NewQueryDef.
- Вывод в формат Excel NewQueryDef.
-
Уничтожение — NewQueryDef и t3_Sborka.
Я по этой теме уже публиковался на
http://www.cyberforum.ru/ms-access/thread2158558.html
но речь там идет об обратном процессе — о сохранении уже готовых таблиц Excel в БД.
Подробнее на примере БД со схемой БД учета трудоемкости изготовления изделия по заданному технологическому маршруту, где значение записи поля Итог в таблице Маршруты есть трудоемкость изготовления конкретной детали в одном из цехов предприятия. Здесь предлагается рассматривать изделие как простую совокупность входящих деталей и на практике дело намного сложнее, но это уже другая тема.
где такой код Basic :
Dim qdfNew As QueryDef
Dim D, N
Otvet = MsgBox("Обработать данные", vbOKOnly, "Отчеты Excel")
Call Заполнитьt3_Sborka
' Создайте временный QueryDef.
Set qdfNew = CurrentDb.CreateQueryDef("ДеталиОперации", "TRANSFORM Max(t3_Sborka.NCH) AS [Max-NCH] SELECT " _
& "t3_Sborka.NumStroka FROM t3_Sborka GROUP BY t3_Sborka.NumStroka ORDER BY " _
& "t3_Sborka.NumStroka, t3_Sborka.NumStolbec PIVOT t3_Sborka.NumStolbec;")
Call closeProject("Excel") 'закрыть процесс Excel
' Откройте набор записей и распечатайте отчет.
DoCmd.OutputTo acOutputQuery, "ДеталиОперации", "ExcelWorkbook(*.xlsx)", "Таблица.xlsx", True, "", , acExportQualityScreen
' Удалите новый QueryDef, потому что это демонстрация.
CurrentDb.QueryDefs.Delete "ДеталиОперации"
' Удалите источник, потому что это демонстрация.
CurrentDb.TableDefs.Delete "t3_Sborka"
Exit_Кн_Отчеты_Click:
Exit Sub
End Sub
Sub Заполнитьt3_Sborka()
Dim rs1 As DAO.Recordset, rs2 As DAO.Recordset, rs3 As DAO.Recordset
Dim NStroka As Long, NStolb As Long
'создать t3_Sborka
CurrentDb.Execute ("CREATE TABLE t3_Sborka (t3Cod COUNTER CONSTRAINT MyFieldConstraint PRIMARY KEY, NumStroka LONG, " _
& "NumStolbec LONG, NCH STRING);")
'три выборки:
Set rs1 = CurrentDb.OpenRecordset("SELECT Детали.КодДетали, Детали.ДецимДетали, Сборки.КолДеталей FROM Детали INNER JOIN Сборки ON " _
& "Детали.КодДетали = Сборки.КодДетали WHERE Сборки.КодИзделия=" & Me.КодИзделия & " ORDER BY Сборки.КодСборки;")
Set rs2 = CurrentDb.OpenRecordset("Цеха")
Set rs3 = CurrentDb.OpenRecordset("t3_Sborka")
<cut/>
'заполнить сетку с данными
NStroka = 0
With rs3
Do Until rs1.EOF
NStroka = NStroka + 1
NStolb = 2
Do Until rs2.EOF
NStolb = NStolb + 1
.AddNew
!NumStroka = NStroka
!NumStolbec = NStolb
!NCH = DLookup("Итог", "Маршруты", "КодДетали=" & rs1!КодДетали & " And КодЦеха=" & rs2!КодЦеха)
.Update
rs2.MoveNext
Loop
rs2.MoveFirst
rs1.MoveNext
Loop
End With
rs2.Close
'заголовки строк
rs1.MoveFirst
NStroka = 0
With rs3
Do Until rs1.EOF
NStroka = NStroka + 1
.AddNew
!NumStroka = NStroka
!NumStolbec = 1
!NCH = rs1!ДецимДетали
.Update
.AddNew
!NumStroka = NStroka
!NumStolbec = 2
!NCH = rs1!КолДеталей
.Update
rs1.MoveNext
Loop
.Close
End With
rs1.Close
Exit_Заполнитьt3_Sborka:
Exit Sub
End Sub
Sub closeProject(proc As String) 'закрыть процесс Excel
Dim Process As Object, i
For Each Process In GetObject("winmgmts:").ExecQuery("Select * from Win32_Process")
i = i + 1
If Process.Caption Like "*" & proc & "*" Then
Process.Terminate
End If
Next
End Sub
Выдает итоговый отчет
Конечно, в коде заполнения источника t3_Sborka можно предусмотреть и заголовки, и поля итогов. Простор широкий, а получаемый результат, думаю, окупит затраченные усилия.
- Что делает макрос
- Код макроса
- Как работает макрос
- Как использовать
- Скачать файл
Ссылка на это место страницы:
#zadacha
Если вы часто копируете и вставляете результаты запросов Microsoft Access в Excel вам пригодится этот макрос. В этом макросе используется DAO (Data Access Object), чтобы открыть и запустить запрос Access в фоновом режиме и вывести результаты в Excel.
В этом макросе вы указываете Excel базу данных Access и извлекаете данные из существующего запроса. Затем вы сохраняете этот запрос в Recordset объекта, который вы можете использовать для заполнения таблиц Excel. Необходимо установить ссылку на библиотеку объектов Microsoft Access. В дополнение к библиотеке объектов доступа, необходимо установить ссылку на Microsoft DAO XX библиотеки объектов, где XX это номер версии. Обратите внимание, что вы можете увидеть несколько версий этой библиотеки в диалоговом окне Reference. Как правило, нужно выбрать последнюю версию Microsoft DAO. Установите флажок рядом с записью.
Ссылка на это место страницы:
#formula
Sub
VipolnitZaprosAccessIzExcel()
Dim
MyDatabase
As
DAO.Database
Dim
MyQueryDef
As
DAO.QueryDef
Dim
MyRecordset
As
DAO.Recordset
Dim
i
As
Integer
Set
MyDatabase = DBEngine.OpenDatabase _
(
"C:TempYourAccessDatabse.accdb"
)
Set
MyQueryDef = MyDatabase.QueryDefs(
"Ваше имя запроса"
)
Set
MyRecordset = MyQueryDef.OpenRecordset
Sheets(
"Лист1"
).
Select
ActiveSheet.Range(
"A6:K10000"
).ClearContents
ActiveSheet.Range(
"A7"
).CopyFromRecordset MyRecordset
For
i = 1
To
MyRecordset.Fields.Count
ActiveSheet.Cells(6, i).Value = MyRecordset.Fields(i - 1).Name
Next
i
End
Sub
Ссылка на это место страницы:
#kak
1. Шаг 1 объявляет необходимые переменные. Переменная объекта MyDatabase привязывает Access к приложению базы данных через библиотеку объектов DAO. MyQueryDef также является объектной переменной, которая служит контейнером памяти для целевого запроса. MyRecordset является объектом набора записей, содержащий результаты извлечения данных. В дополнение к этим переменным i целочисленная переменная используется для добавления заголовков столбцов.
2. Шаг 2 определяет базу данных, которая содержит ваш целевой запрос, а также какой запрос будет запущен. Присвоение запроса объекту QueryDef позволяет вам открыть запрос.
3. Шаг 3 буквально запускает запрос в памяти. Результаты запроса затем сохраняются в MyRecordset. После того как результаты помещены в переменную, вы можете вывести данные в Excel.
4. Шаг 4 готовится к выводу набора записей путем очистки листа Excel. Это гарантирует отсутствие остатка предыдущих данных.
5. На этом шаге используется метод CopyFromRecordset в Excel, чтобы получить набор данных в электронной таблице. В этом примере макрос копирует данные из объекта MyRecordset на Лист1 в ячейку А7.
6. Наконец, макрос перечисляет все поля в наборе записей, чтобы автоматически получить имя каждого заголовка и добавить его в Excel.
Ссылка на это место страницы:
#touse
Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:
1. Активируйте редактор Visual Basic, нажав ALT + F11.
2. Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
3. Выберите Insert➜Module.
4. Введите или вставьте код во вновь созданном модуле.
Ссылка на это место страницы:
#file
Файлы статей доступны только зарегистрированным пользователям.
1. Введите свою почту
2. Нажмите Зарегистрироваться
3. Обновите страницу
Вместо этого блока появится ссылка для скачивания материалов.
Привет! Меня зовут Дмитрий. С 2014 года Microsoft Cretified Trainer. Вместе с командой управляем этим сайтом. Наша цель — помочь вам эффективнее работать в Excel.
Изучайте наши статьи с примерами формул, сводных таблиц, условного форматирования, диаграмм и макросов. Записывайтесь на наши курсы или заказывайте обучение в корпоративном формате.
Подписывайтесь на нас в соц.сетях: