Обработка баз 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. Нажмите кнопку ОК.

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

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

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

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

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

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

 

JeyCi

Пользователь

Сообщений: 3357
Регистрация: 27.11.2013

господа, прошу не судить строго — пишу, потому что была  :oops:  Очень поражена гениальностью и простотой Данного решения!

Record Keeping from Excel to Access

— суть Идеи до боли проста —

вводим данные по мере надобности в Excel — и всё автоматом закидываем в Базу Данных Access

, — пример, как настроить такой милый душе автомат, там есть по линку…
и в чём приятная неожиданность  :)  данного подхода (мне подумалось) —

СОВСЕМ НЕ НАДО никаких Форм для ввода

создавать своими ручками — всё уже давно создано программистами Microsoft !! — т.е. сам Excel !! который может послужить достойным прототипом любой рукодельной Формы для ввода данных в Access… по крайней мере на ячейки уже расчерчен сам  :D — вводи что хочешь, куда хочешь… только прежде настрой, как нравится — что куда кидать потом…
Думаю, возможностей наладить интересный симбиоз Excel и Access для автоматизации каждодневной рутины — намного больше, чем может показаться при первом рассмотрении Office’а…  
p.s. просто была поражена изящностью данного подхода — решила поделиться  8)
другие интересные подходы к ним двоим (Excel и Access) и их взаимодействию  — тоже можете засовывать в эту ветку  … всем успехов
— (способов облегчить жизнь юзеру никогда не бывает мало и они всегда на вес золота)  
P.S.
ответ на #14 в #121

Изменено: JeyCi12.10.2016 20:30:33

чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок — обратитесь к собеседнику на ВЫ — ответ на ваш вопрос получите — а остальное вас не касается (п.п.п. на форумах)

 

JayBhagavan

Пользователь

Сообщений: 11833
Регистрация: 17.01.2014

ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

JeyCi, спасибо за предоставленную информацию.
Только соединение с базой не происходит — выдаёт сообщение макрос «provide correct/full DB path». Путь прописал верный (C:1Trade_DB.mdb). В чём может быть дело?
Спасибо.
ПС Разобрался — изменил провайдера с:
Microsoft.Jet.OLEDB.4.0
на:
Microsoft.ACE.OLEDB.12.0
Простите за безпокойство. :)

Изменено: JayBhagavan31.07.2015 11:46:26
(разобрался)

<#0>
Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori

 

JeyCi

Пользователь

Сообщений: 3357
Регистрация: 27.11.2013

… если путь (на вашем компе!! к файлу базы прописан верно) — то, наверно, причина может быть, что вы пытаетесь подконнектиться к базе, которая открыта в Access (т.е. если у вас файл mdb открыт —>доступ 2-го юзера блокируется) — наверно, в таком случае может быть глюк… у меня коннектится и загоняется инфо в базу ок (даже не смотря на то, что у меня 2010, а файл пример для 2003)…   — кнопкой Save

Изменено: JeyCi31.07.2015 11:48:50

чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок — обратитесь к собеседнику на ВЫ — ответ на ваш вопрос получите — а остальное вас не касается (п.п.п. на форумах)

 

JayBhagavan

Пользователь

Сообщений: 11833
Регистрация: 17.01.2014

ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

JeyCi, спасибо за ответ. Дело было в провайдере. :)

<#0>
Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori

 

Johny

Пользователь

Сообщений: 2737
Регистрация: 21.12.2012

JeyCi

, Вы ещё пользуетесь Access?

There is no knowledge that is not power

 

Я до сих пор использую Access. Причем — именно в связке с excel. Уверен, что SQL Server — гораздо более крутая программа, чем ACCESS. Ну, примерно — как самолет и авто сравнивать. Но самолет я водить не умею, а чтобы научиться — нужны деньги и время (как известно — вещи взаимосвязанные)… да и так далеко ездить не приходится. А также нет аэродрома, ангара, авиационного топлива… Вот по этой же аналогии я, например, пользуюсь access.

Всё сложное — не нужно. Всё нужное — просто /М. Т. Калашников/

 

JeyCi

Пользователь

Сообщений: 3357
Регистрация: 27.11.2013

#7

31.07.2015 21:01:10

я ещё верю, что можно, не усложнять… — там, где можно без этого обойтись… особенно если (согласна с Михаилом)

Цитата
Михаил Лебедев написал: так далеко ездить не приходится

… и в Access иногда можно поковырять запросы, чтобы их потом вставить в MS Query (xl)…
в любом случае

Конструктор в Access более полноценный

 (на всякий случай)…
мало ли что ещё посоветуют добрые люди в этой ветке…  8)
P.S, подробности здесь — (сравнене с Access тоже) —

Использование Microsoft Query

P.S.

Разместить на хостинге sql базу и с нее получать данные на лист

(MySQL)…

Пару слов.

Изменено: JeyCi14.09.2016 19:01:53

чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок — обратитесь к собеседнику на ВЫ — ответ на ваш вопрос получите — а остальное вас не касается (п.п.п. на форумах)

 

Johny

Пользователь

Сообщений: 2737
Регистрация: 21.12.2012

#8

01.08.2015 00:29:28

Цитата
Михаил Лебедев написал: Уверен, что SQL Server — гораздо более крутая программа

Гораздо более, конечно, но ведь всё дело в результате — так? Стоит ли игра свеч? Окупятся ли затраты при изучении более мощного движка? :) Просто сегодня не нужно, а завтра — позарез. Так что я думаю, что стОит потратить время. :D

There is no knowledge that is not power

 

Чего нет в ексель, но есть в акцесс:
1. Сохранение данных на уровне записи, а не файла. Если я внес новые данные, заполнив новую строку в таблице и перешел к другой записи — новые данные сохранились в базе. Если даже отключат электричество.
2. Защита данных (управление правами доступа к данным) на уровне пользователя. Правда — эту одну из самых замечательных возможностей убрали, начиная с офиса 2007. Поэтому рейтинг акцесса резко ушел вниз.
3. Очень легкое и простое создание форм для ввода информации.

Ушел…

Всё сложное — не нужно. Всё нужное — просто /М. Т. Калашников/

 

JeyCi, спасибо, возможно когда нибудь пригодится.  

 

Чего нет в ексель, но есть в акцесс -2 (продолжение сообщения от 1 Авг 2015 11:24:56):
4. Прямая связь с пом. линкованных таблиц с MS OUTLOOK. В акцессе нашел такую функцию, а в ексель — нет. Недавно встала задача обрабатывать большие объемы информации, получаемые через RSS-канал с zakupki.gov.ru. Довольно легко и просто удалось наладить связку zakupki.gov.ru -> Outlook-> Access с последующей чисткой полученных данных с помощью различных запросов.
5. Перекрестные запросы.
6. Одновременное подключение к базе данных акцесс нескольких пользователей, что позволяет нескольким работникам одновременно заполнять одну и ту же базу.

Чего нет в акцесс, но есть в ексель:
1. ВСТРОЕННЫЕ ФУНКЦИИ.
2. Графики
3. Возможность сделать с данными практически всё, что угодно и как угодно (, в том числе и такое зло, как объединение ячеек ( :) )).
4. Сводные таблицы, конечно же. Особенно — Power Pivot

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

Изменено: Михаил Лебедев08.08.2015 20:46:08

Всё сложное — не нужно. Всё нужное — просто /М. Т. Калашников/

 

Максим Зеленский

Пользователь

Сообщений: 4646
Регистрация: 11.06.2014

Microsoft MVP

#12

03.08.2015 12:51:37

Цитата
Михаил Лебедев написал: Сводные таблицы, конечно же. Особенно — Power Pivot

плюс Power Query и Power BI (последнего зверя еще не щупал, но уже на слуху).
Имхо, Excel + Power Query + Power Pivot — вау-вау

А по поводу связки Excel и Acccess — недавно поднимал как раз тему

работы с базами Access из Excel

F1 творит чудеса

 

Михаил Лебедев

Пользователь

Сообщений: 2856
Регистрация: 17.01.2013

#13

03.08.2015 13:20:02

Цитата
Максим Зеленский написал: Power Query

Да, про этого зверька (я имею в виду просто Query) — я забыл сказать как про мощный инструмент для связывания Ассess и Еxcel. Если он сейчас станет сильнее — т.е. будут доработаны слабые места — это… в общем, это здОрово ☺

Всё сложное — не нужно. Всё нужное — просто /М. Т. Калашников/

 

Михаил Лебедев

Пользователь

Сообщений: 2856
Регистрация: 17.01.2013

#14

03.08.2015 13:26:52

Цитата
JeyCi написал: Record Keeping from Excel to Access

обратил внимание, что добавление записей — происходит, а вот удаление внесенных ранее — нет. Кнопка «Удалить» удаляет запись только в текущих ячейках екселя. М.б. это только у меня так?…

Изменено: Михаил Лебедев08.08.2015 20:47:32

Всё сложное — не нужно. Всё нужное — просто /М. Т. Калашников/

 

JeyCi

Пользователь

Сообщений: 3357
Регистрация: 27.11.2013

#15

03.08.2015 14:56:41

Цитата
Михаил Лебедев написал: добавление записей — происходит, а вот удаление внесенных ранее — нет

да, кстати, просмотрев код — видно использование Rst.AddNew,
что и позволяет лишь добавлять записи методом AddNew(Fields, Values)
дорабатывать код можно, как всегда, ориентируясь

сюда

— по возможностям др. методов для рекордсета, в т.ч., полагаю:
Update(Fields, Values)
Delete(AffectRecords)
пока не колдую — но если когда-нибудь придётся допиливать — обязательно

выложу

итог  8)  «творческой мысли» … — лежит в #121
(видимо, где-то в этом русле)
P.S.
но

это

, полагаю, лучше принять к сведению

Цитата
Михаил Лебедев написал:  В общем, я в свое время намучился и не советовал бы. Редактирование записей лучше делать в самом акцессе

Изменено: JeyCi12.10.2016 20:29:08

чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок — обратитесь к собеседнику на ВЫ — ответ на ваш вопрос получите — а остальное вас не касается (п.п.п. на форумах)

 

JeyCi

Пользователь

Сообщений: 3357
Регистрация: 27.11.2013

#16

03.08.2015 15:19:20

примеры линковки Excel и Access тоже были на форуме:
— от Слэна (из поста#16 к посту#12) —

sql запрос

— в Excel’е из Access запрос через строку подключения

Код
DSN=MS Access Database;DBQ=C:1BD.mdb;DefaultDir=D:1;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;

— от B.Key (пост#30) —

Excel: Использование Access для обработки больших текстовых файлов

— линковка текст. файлов к Access, из которого потом то, что надо в Excel… и все нужные запросы на отбор и систематизацию данных можно настроить уже в Access (пользуясь его талантами), чтобы в Excel поступал лишь нужный итог…
— от B.Key (пост#15) —

Избавиться от цикла в запросе

— средствами ADO запрос к БД … и один интересный нюанс для Jet (для ACE, наверно, так же)

Цитата
B.Key   пишет:  Jet сам (исходя из вашего запроса) определят какой столбец индексировать для поиска данных. Естественно он его и сортирует и затем выводит информацию в отсортированном виде.

… к слову о неявном задании сортировки…

Изменено: JeyCi08.08.2015 20:48:32

чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок — обратитесь к собеседнику на ВЫ — ответ на ваш вопрос получите — а остальное вас не касается (п.п.п. на форумах)

 

Pelena

Пользователь

Сообщений: 1416
Регистрация: 22.12.2012

#17

03.08.2015 16:59:01

Цитата
Михаил Лебедев написал: Чего нет в акцесс… —  ВСТРОЕННЫЕ ФУНКЦИИ

Тем не менее Access позволяет использовать встроенные функции Excel в расчётах при подключении Microsoft Excel Object Library

 

bedvit

Пользователь

Сообщений: 2477
Регистрация: 02.04.2015

Виталий

К моему огромному сожалению Access так и остался на уровне 2003 офиса. Видимо Microsoft не посчитала нужным развивать этот продукт. Как СУБД для небольших баз данных, с не ресурсоёмкими запросами, VBA, совместимостью с продуктами Microsoft Office, простотой создания запросов (мастером) он хорош. До сих пор его используем. Но ограничение размера используемой памяти в 2Гб (причем это включая сис. таблицы и т.д., т.е. по факту ещё меньше) — это что-то (уровень 2003 года). Один этот параметр не позволяет не только нормально работать с базой .mdb, .accdb, но и писать более-менее ресурсоемкие запросы.

«Бритва Оккама» или «Принцип Калашникова»?

 

Johny

Пользователь

Сообщений: 2737
Регистрация: 21.12.2012

#19

04.08.2015 16:50:21

Цитата
bedvit написал: Но ограничение размера используемой памяти в 2Гб

Там ещё и все индексы НЕкластерные. :)

There is no knowledge that is not power

 

bedvit

Пользователь

Сообщений: 2477
Регистрация: 02.04.2015

Виталий

Johny, а поподробнее (индексация полей)? :-)

«Бритва Оккама» или «Принцип Калашникова»?

 

Johny

Пользователь

Сообщений: 2737
Регистрация: 21.12.2012

Поподробнее… Можно загуглить. :)
Если вкратце, то кластерный индекс — это сами данные, а некластерный индекс — это ссылка на данные. По своей сути некластерный индекс — это отдельная от физической таблицы структура, данные в которой физически отсортированы. То есть Access сначала находит искомое значение в некластерном индексе. Найденное значение будет содержать ссылку (row pointer) на строку в куче (heap). Каждая таблица Access — это heap. Каждая строка в этой куче имеет свой уникальный ID (row pointer —  указатель строки). Так вот некластерные индексы не содержат сами данные, а только Row Pointer. И как можно уже догадаться, Access’у нужно совершить два действия — 1) найти значение в индексе и 2) перейти к строке по Row Pointer. Пункт 2 называется Row Look-up (или Bookmark Look-up).

Хороший пример — книга. Обычно в конце книге есть глоссарий (указатель имён). В нём все слова отсортированы — это и есть некластерный индекс, отдельная структура. Как только мы нашли значение, мы видим страницу (Row Pointer), где находится искомое слово — и переходим на эту страницу. Переход — это наш Row Look-up.

На самом деле, грамотно выбрать индексы — это целая наука. Учитывая, что Access не даёт такого анализа внутренней структуры, как, например, SQL Server, то трудно сказать, эффективны ли индексы в Access’е или нет. Но как можно уже догадаться, чем больше таблица, тем меннее эффективным становится некластерный индекс.

Изменено: Johny04.08.2015 21:32:17

There is no knowledge that is not power

 

Smiley

Пользователь

Сообщений: 530
Регистрация: 16.05.2013

Немного ОФФ. А можете посоветовать какие-нибудь книжки по Access 2010 и выше, а то все, что я читал, пишут сумбурно, перескакивая с одного на другое… Может канал какой хороший есть на Ютубе? :) спасибо.

 

Максим Зеленский

Пользователь

Сообщений: 4646
Регистрация: 11.06.2014

Microsoft MVP

#23

05.08.2015 11:02:16

Цитата
Johny написал:
некластерный индекс — это отдельная от физической таблицы структура, данные в которой физически отсортированы.

Напомнило светлой памяти dBaseIII+ по имени РЕБУС :) или что-то в том же духе, типа первого FoxPro и Paradox…

F1 творит чудеса

 

Johny

Пользователь

Сообщений: 2737
Регистрация: 21.12.2012

#24

05.08.2015 12:27:52

Цитата
Smiley написал:
А можете посоветовать какие-нибудь книжки по Access 2010 и выше

Я русских книг не читал — только английские. Если знаете инглиш, то могу дать пару-тройку названий. :)

There is no knowledge that is not power

 

Smiley

Пользователь

Сообщений: 530
Регистрация: 16.05.2013

Johny, печаль. Английский знаю, но не технический, может быть очень сложно вникнуть. Книги, наверное, типа Гетца? Сейчас читал Гурвица, жесть какая-то… Постоянные перескоки… что? куда? не понятно же (с)

Изменено: Smiley05.08.2015 12:45:27

 

Johny

Пользователь

Сообщений: 2737
Регистрация: 21.12.2012

Прочитав много книг на буржуйском, скажу, что некоторые авторы доходят до абсурда, описывая в целый параграф очевидные вещи.
Стили написания, конечно, у всех разный. Например, по некоторым вещам желательна была бы картинка, но её нет — вот и приходится допетривать. Также заметил, что очень полезно читать разных авторов, чтобы сложилась картинка — в одной книге поясняется то, что было нераскрыто в другой. :)

There is no knowledge that is not power

 

Михаил Лебедев

Пользователь

Сообщений: 2856
Регистрация: 17.01.2013

#27

05.08.2015 17:05:45

Цитата
bedvit написал: Access так и остался на уровне 2003 офиса

К сожалению, стал даже хуже.Красивостей стало больше, а реально ценные возможности (защита на уровне пользователя, а не на уровне базы данных) — ампутировали.

Цитата
Pelena написал: Access позволяет использовать встроенные функции Excel в расчётах при подключении Microsoft Excel Object Library

Пробовал этим воспользоваться еще в бытность access 97. Тогда — жутко тормозил процесс при их использовании. Написанная UDF-ка работала гораздо быстрее. С тех пор — желание ими пользоваться ушло и больше не вернулось ☺

Еще про то, чего нет в access
Нет макрорекордера. Как в ексель и ворд.

Всё сложное — не нужно. Всё нужное — просто /М. Т. Калашников/

 

JeyCi

Пользователь

Сообщений: 3357
Регистрация: 27.11.2013

#28

05.08.2015 18:34:17

Цитата
Михаил Лебедев написал: Нет макрорекордера. Как в ексель и ворд.

а так сразу и не скажешь  :oops: — т.к. ещё не смотрела… спасибо!
чтобы ветку не омрачать этой новостью — оставлю пару линков:
1).

vbex.ru

2).

Access Code                 Snippets

3).

VBA Tips

(что-то есть здесь)
4). и по мелочам

здесь

— включая

Полезные ссылки

и как проявить ошибку в запросе ( который в xl или макросе с ado)

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

(действий много, но для учебных целей, ошибки запросов, визуализированные в Access, — более наглядны, т к более подробно Access скажет, где какая ошибка)…

p.s. совсем для начинания: (- из excel’я)

Excel VBA: как работать с базой данных
Создание сводной таблицы на основе внешнего источника данных (на примере MS Access)
SQL за 10 минут

Изменено: JeyCi09.08.2015 11:10:02

чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок — обратитесь к собеседнику на ВЫ — ответ на ваш вопрос получите — а остальное вас не касается (п.п.п. на форумах)

 

Михаил Лебедев

Пользователь

Сообщений: 2856
Регистрация: 17.01.2013

#29

05.08.2015 20:36:51

Цитата
Smiley написал: посоветовать какие-нибудь книжки по Access 2010

Книжки не посоветую, а вот форум, который мне в свое время очень помог, могу.
Спасибо ему (или им, участникам форума), в свое время оч. помогали.

http://hiprog.com/forum/

Всё сложное — не нужно. Всё нужное — просто /М. Т. Калашников/

 

Smiley

Пользователь

Сообщений: 530
Регистрация: 16.05.2013

#30

06.08.2015 10:10:07

Михаил Лебедев, доброе утро. Спасибо за информацию. Я вообще сейчас думаю, что его лучше подтянуть с помощью видеороликов :)

Учусь программировать :)

Отчет Access имеет известные достоинства, такие как простота формирования его структуры и
мощный аппарат компоновки исходных данных. Но есть и неудобства: пользователь для
изменения этого отчета должен вносить изменения в исходные данные базы, или, того хуже, обращаться к Разработчику для внесения поправок (напр. нужен раздел «Кому, от кого»).
Есть еще недостатки, описывать их, думаю, не стоит: понятно.

Предлагается решение:

  1. Создание локальной исходной таблицы — источника (t3_Sborka).
  2. Копирование исходных данных отчета в t3_Sborka с мин. преобразованием типов данных
    (здесь в t3_Sborka данные сохраняются в поле формата STRING).
    … и далее по F1:
  3. Формирование на основе t3_Sborka перекрестного запроса NewQueryDef.
  4. Вывод в формат Excel NewQueryDef.
  5. Уничтожение — 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 можно предусмотреть и заголовки, и поля итогов. Простор широкий, а получаемый результат, думаю, окупит затраченные усилия.

  1. Что делает макрос
  2. Код макроса
  3. Как работает макрос
  4. Как использовать
  5. Скачать файл

Ссылка на это место страницы:
#zadacha

Если вы часто копируете и вставляете результаты запросов Microsoft Access в Excel вам пригодится этот макрос. В этом макросе используется DAO (Data Access Object), чтобы открыть и запустить запрос Access в фоновом режиме и вывести результаты в Excel.

В этом макросе вы указываете Excel базу данных Access и извлекаете данные из существующего запроса. Затем вы сохраняете этот запрос в Recordset объекта, который вы можете использовать для заполнения таблиц Excel. Необходимо установить ссылку на библиотеку объектов Microsoft Access. В дополнение к библиотеке объектов доступа, необходимо установить ссылку на Microsoft DAO XX библиотеки объектов, где XX это номер версии. Обратите внимание, что вы можете увидеть несколько версий этой библиотеки в диалоговом окне Reference. Как правило, нужно выбрать последнюю версию Microsoft DAO. Установите флажок рядом с записью. 

Ссылка на это место страницы:
#formula

  1. Sub VipolnitZaprosAccessIzExcel()
  2. Dim MyDatabase As DAO.Database
  3. Dim MyQueryDef As DAO.QueryDef
  4. Dim MyRecordset As DAO.Recordset
  5. Dim i As Integer
  6. Set MyDatabase = DBEngine.OpenDatabase _
  7. ("C:TempYourAccessDatabse.accdb")
  8. Set MyQueryDef = MyDatabase.QueryDefs("Ваше имя запроса")
  9. Set MyRecordset = MyQueryDef.OpenRecordset
  10. Sheets("Лист1").Select
  11. ActiveSheet.Range("A6:K10000").ClearContents
  12. ActiveSheet.Range("A7").CopyFromRecordset MyRecordset
  13. For i = 1 To MyRecordset.Fields.Count
  14. ActiveSheet.Cells(6, i).Value = MyRecordset.Fields(i - 1).Name
  15. Next i
  16. 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. 

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

Подписывайтесь на нас в соц.сетях:

Like this post? Please share to your friends:
  • Обработка xml файлов в excel
  • Обработка pdf в word
  • Обработка json в excel
  • Обработка excel файла в pandas
  • Обработка excel на сервере