Excel access and sql

Содержание

  1. SQL запрос из Excel VBA
  2. Sql запрос из excel в excel
  3. SQL запросы в Microsoft Excel
  4. Создание SQL запроса в Excel
  5. Способ 1: использование надстройки
  6. Способ 2: использование встроенных инструментов Excel
  7. Способ 3: подключение к серверу SQL Server
  8. Импорт данных из базы данных с помощью запроса на ее языке (Power Query)
  9. См. также
  10. SQL запрос к Oracle из Excel через ODBC
  11. Sql запрос из Excel в Access
  12. SQL запрос на добавление данных из VBA Excel в таблицу Access
  13. Запрос из Excel к SQL серверу (Иное/Other)

SQL запрос из Excel VBA

SQL расшифровывается как Structured Query Language (структурированный язык запросов) и является языком, который используется для получения информации из баз данных (таких как Access , SQL Server from Microsoft , Oracle , Sybase , SAP и других). Вы также можете получать данные из интернета, текстовых файлов или других Excel или CSV файлов.

Итак, нам нужно соединение с базой данных (переменная varConn в макросе ниже) и SQL запрос (переменная varSQL ), чтобы автоматизировать получение данных из базы для отчета. В примере ниже есть SQL запрос , который получает данные с малой базы данных в Access.

Нажмите скачать базу данных Access . Для корректного соединения база данных должна быть в папке «Мои документы«. Файл Access будет выглядеть:

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

Меню Сервис — Макрос — Редактор Visual Basic , вставьте новый модуль (меню Insert — Module ) и скопируйте туда текст макроса:

Нажимаем сохранить и возвращаемся к Excel . Выбираем в меню Вид — Макросы (Alt + F8) название нашего макроса » SQLQuery_1 «.

Источник

Sql запрос из excel в excel

SQL запросы в Microsoft Excel

​Смотрите также​ SQL cервер» -​ формы работы с​ 42745, 0, 42746,​: Все равно, спасибо​ из БД через​ (​ на базе данных.​ бесплатного пользования надстройкой​ по кнопке​, которая размещена на​ файла, после чего​Урок: «Умные» таблицы в​ сам редактор SQL​, стояла галочка, если​«Начать пробный период»​

​ После этого запустится​SQL – популярный язык​

​ ввожу имя сервера​ Access через VBA​ 2, 1, 2,​

Создание SQL запроса в Excel

​ )​ запрос rsORA.Open ‘SELECT. (тело​сервер​ При запуске запроса​ ограничен всего двумя​«Из других источников»​ ленте в блоке​ кликнуть на кнопку​ Экселе​ запросов. В нем​ заголовки в вашем​.​ окно, в котором​ программирования, который применяется​ — выбираю базу​ Excel — согласен.​ ‘Кратко’, ‘Полно’)​

Способ 1: использование надстройки

​Кстати, все заработало,​ запроса)’, cnORA ‘Вставка​и​ на ее языке​ календарными неделями.​, которая размещается на​ инструментов с одноименным​«OK»​Существует также способ создать​ нужно писать программный​ массиве действительно присутствуют.​Далее мы возвращаемся к​ нужно будет подтвердить​ при работе с​ данных из выпадающего​ Но Access использую​Типы данных в​ когда я изменил​ даннных из полученого​

    ​Da​ записи другим пользователем,​​Автор: Максим Тютюшев​​ ленте в блоке​ названием.​.​ SQL запрос к​ код. Наименования столбцов​ Затем жмите на​ окну лицензии. Как​ согласие с лицензионным​ базами данных (БД).​ списка — выбираю​ только для хранения​ Access:​ процедуру подключения так:​ набора записей ‘1-й​йства базы данных​ вам будет предложено,​​Примечание:​​ инструментов​

​После этого запускается окно​Вслед за этим запускается​ выбранному источнику данных​ выбранной таблицы там​

​ кнопку​ видим, введенные вами​ соглашением на использование​ Хотя для операций​ интересующую таблицу -​ данных. Сделать полноценное​NoParent — число​​With conn .ConnectionString​​ вариант — все​

​), вы увидите в​ чтобы убедиться, что​

​Мы стараемся как​«Получение внешних данных»​ подключения к книге.​ окно выбора таблицы​ с помощью встроенных​ уже будут отображаться​«OK»​​ значения уже отображаются.​​ продукции компании Microsoft​

​ с базами данных​ указываю диапазон, куда​ приложение в Access​NoResponsible — число​ = ‘Provider=MSDAORA; Data​ полученные записи вставляются​ строке, чтобы запросить​ вы знаете, запросов,​ можно оперативнее обеспечивать​. На этот раз​ В нем мы​ в указанной базе​ инструментов Эксель.​ автоматически. Выбор столбцов​​.​​ Теперь нужно просто​ — NET Framework​ в пакете Microsoft​ следует вставить данные.​ не получилось (слишком​​EosdoTask — boolean​​ Source=var1; ‘ &​

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

​ 4. Для этого​ Office имеется отдельное​Но при этом​ сложно для моих​Reviewer — число​ _ ‘User на лист Range(‘адрес​​ или базы данных​

​ с учетными данными.​ материалами на вашем​ выбираем вариант​ подключенной нами базы​ области следует выбрать​​ этого перемещаемся во​​ с помощью команды​ диапазон будет отформатирован,​«OK»​ всего лишь нужно​ приложение — Access,​ получаю ЦЕЛУЮ таблицу,​ скромных знаний), а​Responsible — число​ Password=var3;’ .Open End​ верхней левой ячейки’).CopyFromRecordset​
​ (если сведения о​Power Query позволяет задать​ языке. Эта страница​«С сервера SQL Server»​​ данных. Если подключенных​​ наименование нужной таблицы​​ вкладку​​SELECT​ как таблица, что​.​​ кликнуть по кнопке​​ но программа Excel​ а мне нужен​ если оставить набор​GroupSub — текст​ With​ rsORA ‘2-й вариант​ запросе доступа указан​ запрос языке базы​ переведена автоматически, поэтому​.​ БД несколько, то​

​ (если их несколько),​«Данные»​. Нужно оставить в​ повлияет как на​После того, как вы​«Принимаю»​ тоже может работать​ только лишь один​ таблиц — точно​DateStart — Date/time​pauletto​ — вставляются определенные​ в Power BI​ данных в поле​​ ее текст может​​Происходит открытие окна подключения​ выбираем нужную и​ а потом нажать​​.​​ перечне только те​ его свойства (например,​ проделаете вышеуказанные манипуляции,​внизу окошка.​ с БД, делая​​ столбец с конкретным​​ какой-нибудь пользователь своими​

​DateEndPlan — date/time​: Как сделать связь​ поля в заданную​ для источника данных).​Инструкцию SQL​ содержать неточности и​ к серверу баз​ выделяем её. После​ на кнопку​В блоке инструментов​ колонки, которые вы​ растягивание), так и​ в вашем экземпляре​После этого установщик производит​ SQL запросы. Давайте​​ названием.​​ кривыми ручонками влезет​​Time — число​​ с базой данных​ ячейку While Not​ Дополнительные сведения о​​, при подключении к​​ грамматические ошибки. Для​​ данных. В поле​​ этого щелкаем по​«Далее»​«Получение внешних данных»​

​ желаете, чтобы указанная​ на визуальное отображение.​ Эксель появится новая​ загрузку обязательных файлов​ узнаем, как различными​Заранее благодарен!​ в запрос или​​Deadline — date/time​​ через ADO ,чтобы​

​ rsORA.EOF . Range(‘адрес​ запросе доступа к​ базе данных. В​ нас важно, чтобы​«Имя сервера»​​ кнопке​​.​

​, который расположен на​ команда обрабатывала.​​ Указанной таблице будет​​ вкладка –​​ и начинает процесс​​ способами можно сформировать​

​SLAVICK​ таблицу и что-то​Importance — число​ результат какого-то запроса​ ячейки’)=rsORA.Fields(номер поля из​ источнику данных читайте​ приведенном ниже примере​ эта статья была​

​указываем наименование того​«Свойства…»​После этого открывается окно​ ленте, жмем на​Далее пишется текст команды,​ присвоено имя. Чтобы​«XLTools»​ их установки.​ подобный запрос.​: А если так:​ поменяет, а работая​Status — число​​ в БД выводился​​ запроса — начинается​ Запросов на доступ​ мы Импорт данных​ вам полезна. Просим​ сервера, к которому​

​в правой части​ сохранения файла подключения​ значок​ которую вы хотите​ его узнать и​. Но не спешим​Далее откроется окно, в​

  • ​Скачать последнюю версию​​»Данные» — «Из​
  • ​ в Excel -​​DateEndFact — date/time​
  • ​ в ячейку Excel​​ с 0).Value . ​
  • ​ к внутренним источникам​​ из базы данных​
  • ​ вас уделить пару​​ выполняем подключение. В​

​ окна.​ данных. Тут указаны​«Из других источников»​​ применить к выбранным​​ по желанию изменить,​​ переходить в неё.​​ котором вы должны​​ Excel​​ других источников» —​​ врятли куда-то полезет,​​TaskShortText — текст​​Alex77755​​ rsORA.MoveNext Wend ‘Закрываем​

​ данных.​ SQL Server, с​ секунд и сообщить,​ группе параметров​Запускается окно свойств подключения.​ основные сведения о​. Открывается список дальнейших​ объектам. Команды составляются​ клацаем по любому​ Прежде, чем создавать​ подтвердить свое согласие​Читайте также: Как создать​ «Из Microsoft Query»​

​ нажал на кнопочку​TaskFullText — текст​: А стандартный метод​ переменные rsORA.Close cnORA.Close​​Если установить подключение данных​​ помощью запроса на​ помогла ли она​«Учетные сведения»​ Перемещаемся в нем​

​ подключении, которое мы​ вариантов действий. Выбираем​

Способ 2: использование встроенных инструментов Excel

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

    ​Если нет подключения​ и выгрузил на​Уже всю голову​​ не устраивает?​​Sinister​

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

​ Экселе​​ в списке, то:​​ лист данные, нажал​ сломал. Все значения​​Данные — Импорт​​: У меня на​Редакторе запросов​​ работает аналогично всех​​ кнопок внизу страницы.​

​ именно будет происходить​​«Определение»​​ окне достаточно нажать​«Из мастера подключения данных»​ операторы SQL:​​ группа вкладок –​​ которым мы будем​ нужно щелкнуть по​​Язык запросов SQL отличается​​ «новый источник данных»​

​ на кнопочку -​ текстовые — в​ внешних данных -​ выражении ‘cnORA As​.​ баз данных, поддерживаемые​ Для удобства также​ подключение: с использованием​. В поле​ на кнопку​.​​ORDER BY​​«Работа с таблицами»​ работать, в так​ кнопке​ от аналогов тем,​​ — — и​​ добавил или изменил.​ кавычках (апострофах), других​ создать запрос.​ ADODB.Connection’ возникает ошибка​Фигуры данных как​ Power Query.​ приводим ссылку на​ проверки подлинности Windows​«Текст команды»​«Готово»​​Запускается​​– сортировка значений;​

​. Перемещаемся во вкладку​ называемую, «умную» таблицу​«Установить»​ что с ним​ создать​ Плюс формат Excel​ типов данных -​указать путь, выбрать​ компиляции. Для выполнение​​ вы предпочитаете, затем​​Подключение к базе данных​

​ оригинал (на английском​ или путем введения​, находящееся внизу текущего​.​Мастер подключения данных​JOIN​«Конструктор»​ и присвоить ей​​.​​ работают практически все​

  • ​Дальше выбираете любой​ удобнее для конечного​ без кавычек. Дату​ запрос​ приведенного Вами кода​ нажмите кнопку​ SQL Server с​
    • ​ языке) .​​ имени пользователя и​
    • ​ окна, записываем SQL​​На листе Excel запускается​
    • ​. В перечне типов​​– объединение таблиц;​

    ​, размещенную в ней.​ имя.​Затем начинается процедура установки​ современные системы управления​ столбец, любой таблицы​ пользователя, не надо​ перевел из формата​pauletto​ требуется что-то дополнительно​Применить и закрыть​ помощью Power Query.​Примечание:​ пароля. Выставляем переключатель​ команду в соответствии​​ окошко импорта данных.​​ источников данных выбираем​

    ​GROUP BY​ На ленте в​Для этого выделяем​​ непосредственно самой надстройки.​​ БД. Поэтому вовсе​

    ​Далее—Далее​ ничего объяснять.​ представления даты (ДД.ММ.ГГГГ)​:​​ устанавливать кроме Офиса​​для сохранения изменений​ На вкладке ленты​​ ​​ согласно принятому решению.​ с синтаксисом данного​ В нем можно​«ODBC DSN»​

    ​– группировка значений;​ блоке инструментов​ указанный массив или​После её завершения откроется​ не удивительно, что​Если нужно дополнительно​Кстати, «2» -​ в числовое представление..​Alex77755​ 2000, в котором​ и импортировать данные​​POWER QUERY​​Power Query​ Если вы выбрали​

    ​ языка, о котором​ указать, в каком​. После этого щелкаем​​SUM​​«Свойства»​​ любой его элемент.​​ окно, в котором​ такой продвинутый табличный​ подправить запрос, то​ это дата 01.01.1900.​snipe​, а не могли​ я предполагаю его​​ листа.​​щелкните​известна как​​ второй вариант, то​​ мы вкратце говорили​

  • ​ именно виде вы​ по кнопке​– суммирование значений;​в поле​ Находясь во вкладке​​ будет сообщаться, что​​ процессор, как Эксель,​ Галку «Просмотр или​ Так обозначаю отсутствие​: значение​ бы показать пример​ запускать из Excel?​Импорт данных из внешних​Из базы данных​Получение и преобразование​
  • Способ 3: подключение к серверу SQL Server

    ​ кроме того в​ при рассмотрении​ хотите, чтобы данные​«Далее»​DISTINCT​«Имя таблицы»​«Главная»​ инсталляция успешно выполнена.​ обладающий многими дополнительными​ изменение данных в​ даты, например, нет​2​

      ​Alex77755​meja​​ источников​​>​в Excel 2016.​​ соответствующие поля придется​​Способа 1​ были представлены:​.​​– удаление дубликатов.​​будет указано наименование​щелкаем по значку​ В указанном окне​​ функциями, тоже умеет​​ «Microsoft Query», если​

  • ​ срока у задачи​(это же какая​: А что мешает​​: Нужно подключить библиотеку​​Sinister​Из базы данных SQL​ Приведенные ниже сведения​ ввести имя пользователя​​. Затем жмем на​​Таблица​Открывается окно​Кроме того, в построении​ массива, которое ему​«Форматировать как таблицу»​ достаточно нажать на​ работать с этим​ не нужно, то​ — устанавливаю красивое​ дата получается)​ самому нажать Данные​ Microsoft ActiveX Data​: Люди! Подскажите, pls,​ Server​ относятся к оба.​ и пароль. После​ кнопку​​;​​Мастера подключения данных​ запроса можно использовать​ присвоила программа автоматически.​. Он размещен на​ кнопку​ языком. Пользователи, владеющие​ можно «вернуть данные​ нулевое значение («0″​может дату вводить​
  • ​ — Импорт внешних​ Objects 2.x Library​ как написать макрос,​.​ Подробнее об этом​ того, как все​«OK»​Отчёт сводной таблицы​, в котором нужно​ операторы​При желании это наименование​ ленте в блоке​«Закрыть»​ языком SQL, используя​ в Microsoft Excel»​ — не такая​ все-таки как дату​ данных — создать​ в Tools/Refrences​ который по данным​Во всплывающем окне​ читайте в статье​ настройки проведены, жмем​

    Импорт данных из базы данных с помощью запроса на ее языке (Power Query)

    ​;​​ выбрать тип источника.​MAX​ пользователь может изменить​ инструментов​.​ Excel, могут упорядочить​ и ГОТОВО​ ровная дата получается​ (возможно надо учесть​ запрос.​Sinister​ запроса к базе​База данных Microsoft SQL​ Получение и преобразование​ на кнопку​После этого производится автоматический​Сводная диаграмма​ Выбираем наименование​,​ на более информативное,​«Стили»​

    ​Надстройка установлена и теперь​​ множество различных разрозненных​​Тут можно править​​ )​​ что формат америкоский​​Alex77755​: Все очень хорошо​ данных Oracle устанавливал​:​ в Excel 2016.​«Далее»​ возврат к окну​

    ​.​«MS Access Database»​MIN​ просто вписав в​. После этого открывается​ можно запускать файл​ табличных данных.​ SQL запрос.​Kontugenyi​ мм.дд.гггг) #12.31.2016#​: Показаны не попорядку​ скомпилировалось, спасибо Только​ бы значения переменных​Укажите​Power Query обеспечивает гибкость,​. После выполнения этого​ подключения к книге.​Выбираем нужный вариант. Чуть​. Затем щелкаем по​,​ поле с клавиатуры​

    ​ список выбора различных​​ Excel, в котором​Но для начала давайте​После того как​, очевидная ошибка в​лично мое мнение​1=последний​ осталась последняя проблема​ или ячеек рабочего​сервер​ чтобы импортировать данные​ действия происходит подключение​ Нам остается только​ ниже требуется указать,​ кнопке​AVG​ желаемый вариант и​

    ​ стилей. Выбираем тот​ нужно организовать SQL​ рассмотрим вариант, когда​​ создали нужный запрос:​​ использовании зарезервированного слова​ что делать форму​Kontugenyi​ — это runtime​ листа? Очень хотелось​и​ из самых разных​ к указанному серверу.​ кликнуть по кнопке​ куда именно следует​«Далее»​

    ​,​ нажав на клавишу​ стиль, который вы​ запрос. Вместе с​​ из Экселя можно​​Файл — вернуть​​Time​​ в Excel для​​: Добрый день, форумчане!​ error -2147217843 (80040e4d)​​ бы пример соединения​

    ​базу данных​​ видов баз данных,​​ Дальнейшие действия по​

    ​«Обновить»​​ поместить данные: на​​.​​COUNT​​Enter​ считаете нужным. На​ листом Эксель открывается​ создать SQL запрос​ данные в Microsoft​

    ​. Если уж так​​ передачи инфы в​​ Столкнулся с ошибкой​ ‘Automation error’. Возникает​ с базой через​, из которой вы​​ которые он поддерживает​​ организации запроса к​

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

    ​ назвали поле, хотя​​ Акс это полное​ запроса на добавление​ при выполнении Open.​​ ODBC и строку​​ хотите импортировать данные​​ (не содержит Microsoft​​ базе данных аналогичны​​ обращение к базе​ на текущем листе.​ в котором следует​LEFT​После этого таблица готова​ выбор никак не​ кода лицензии XLTools.​ стандартного инструментария, а​Янек​ это и не​ извращение​ при попытке передать​ Единственное подозрение у​ выполнения запроса и​

    ​ с помощью запросов​ Access). Запуск запросов​​ тем, которые мы​​ данных с запросом,​
    ​ В последнем случае​ перейти в директорию​и др.​​ и можно переходить​​ повлияет, так что​ Если у вас​ воспользовавшись сторонней надстройкой.​

    См. также

    ​: SLAVICK, Вах! Дорогой!​ лучший вариант, то​

    SQL запрос к Oracle из Excel через ODBC

    ​проще сделать форму​​ данные из формы​ меня на то,​ считывания значений разультата​ на языке базы​ языке базы данных,​ описывали в предыдущем​ после чего БД​ предоставляется также возможность​ расположения базы данных​В нижней части окна​ непосредственно к организации​ основывайте свой выбор​ имеется код, то​ Одной из лучших​
    ​ Еще не знаю,​

    ​ его имя надо​​ в аксе и​ в Excel в​ что неправильно указан​ его выполнения.​
    ​ данных.​ которые можно сэкономить​ способе.​ возвращает результаты его​ выбора координат размещения.​ в формате mdb​ следует указать, куда​ запроса. Перемещаемся во​ исключительно на основе​ нужно ввести его​ надстроек, выполняющих эту​ как эта хрень​ брать в прямые​ напрямую вводить инфу​ таблицы Access. Ошибка​ параметр Data Source.​Заранее благодарен!​Разверните поле​ время, необходимое для​Как видим, в Экселе​ обработки назад на​ По умолчанию данные​ или accdb и​ именно будет выводиться​ вкладку​ предпочтений визуального отображения.​ в соответствующее поле​ задачу, является комплекс​ работает, но ведь​ скобки​Kontugenyi​ — ошибка синтаксиса​ Каким его задавать?​meja​

    ​Инструкцию SQL​​ создания запросов с​ SQL запрос можно​ лист Excel, в​ размещаются на текущем​ выбрать нужный файл​ результат обработки. Это​«XLTools»​Вслед за этим запускается​ и нажать на​ инструментов XLTools, который​

    ​ она работает. В​​[Time]​: Спасибо откликнувшимся.. столько​ в инструкции INSERT​ В OrantNETWORKADMINTnsnames.ora записано​

    ​: Один из вариант​​и вставьте или​ помощью интерфейса Power​ организовать, как встроенными​ ранее перенесенную нами​ листе. Левый верхний​ БД. Навигация между​ может быть новый​.​ небольшое окошко. В​ кнопку​ кроме указанной возможности,​ свойствах подключения в​Аппаздал​ ошибок сделал -​ INTO. Уже перелистал​ имя, которое я​ — подключиться, используя​ введите запрос на​

    ​ Query. Эта функция​​ инструментами программы, так​ таблицу.​ угол импортируемого объекта​ логическими дисками при​ лист книги (по​После перехода на ленте​ нем указываются координаты​«OK»​ предоставляет массу других​ определении в тексте​

    ​Янек​​ даже не ожидал.​ форум и никак​
    ​ пытался использовать в​ ADO. Ниже представлены​ языке базы данных,​
    ​ особенно полезна для​ и при помощи​Кроме того, посредством инструментов​ размещается в ячейке​ этом производится в​ умолчанию) или определенный​

    Sql запрос из Excel в Access

    ​ в блоке инструментов​​ таблицы. Как правило,​. Если вы желаете​ функций. Правда, нужно​ команды ввел SELECT​: Добрый день, друзья.​ Список ошибок, может​

    ​ не могу понять​​ качестве Data Source.​ узловые моменты кода.​
    ​ а затем нажмите​ работы с сложных​ сторонних надстроек. Каждый​
    ​ Excel существует возможность​A1​

    ​ специальном поле​​ диапазон на текущем​​«SQL запросы»​​ программа сама «подхватывает»​ использовать бесплатную версию​

    ​ заметить, что бесплатный​​ ‘нужный мне столбец’​ Может, кто знает:​ кому пригодиться:​ в чем ошибка.​ Должно быть это​

    ​’Объявляем вначале переменные​​кнопку ОК​
    ​ запросов, которые уже​

    SQL запрос на добавление данных из VBA Excel в таблицу Access

    ​ пользователь может выбрать​​ соединения с сервером​.​«Диски»​ листе. В последнем​щелкаем по значку​ полный адрес массива,​ на 14 дней,​ период пользования инструментом​ FROM ‘имя нужной​1. Имеем Excel​1) Дату нужно​ Раньше аналогичный код​ неправильно?​ Dim cnORA As​.​
    ​ существуют — и​ тот вариант, который​
    ​ SQL Server и​После того, как все​. Между каталогами производится​ случае нужно переставить​«Выполнить SQL»​ даже если вы​ то следует просто​ составляет всего 14​ мне таблицы’ и​ 2010​ заключать в символы​ работал. ​
    ​meja​ ADODB.Connection ‘для соединения​
    ​Если вы подключаетесь к​
    ​ могут хотите или​
    ​ удобнее для него​
    ​ посыла к нему​
    ​ настройки импорта указаны,​
    ​ переход в центральной​
    ​ переключатель в соответствующую​
    ​.​
    ​ выделили только одну​
    ​ нажать на кнопку​
    ​ дней, а потом​
    ​ усё заработало. ​
    ​2. Имеем сервер​
    ​ #​
    ​Запрос на добавление​

    ​: Может быть и​ Dim rsORA As​ серверу в первый​ не знаете, как​ и является более​ запросов. Построение запроса​ жмем на кнопку​ области окна под​ позицию и указать​

    ​Запускается окно выполнения SQL​​ ячейку в нем.​
    ​«Пробная лицензия»​
    ​ придется покупать лицензию.​СПАСИБО. А ведь​
    ​ с базами данных​2) Разделители в​ выглядит следующим образом​ в этом ошибка,​ ADODB.Recordset ‘для получения​
    ​ раз, вы увидите​ перестроить с помощью​ подходящим для решения​ не отличается от​«OK»​ названием​
    ​ координаты этого диапазона.​ запроса. В левой​ Но на всякий​

    ​.​​После того, как вы​ через «Данные» -​ и именами таблиц​ дате не «.»,​INSERT INTO TBLtask (NoParent,​
    ​ но скорее всего​ записей ‘Устанавливаем соединение​ запрос на выберите​
    ​ интерфейса Power Query.​ конкретно поставленной задачи.​ предыдущего варианта, но​
    ​.​«Каталоги»​После того, как запрос​
    ​ его области следует​ случай не мешает​
    ​При выборе пробной лицензии​
    ​ скачали файл надстройки​ «Из других источников»​3. Необходимо создать​ а «/»​ NoResponsible, EosdoTask, Reviewer,​ в другом: нужно​ с БД Set​ режим проверки подлинности​Примечание по безопасности:​ Хотя, возможности надстройки​ прежде всего, нужно​Как видим, таблица из​. В левой области​ составлен и соответствующие​ указать лист документа​ проверить ту информацию,​ открывается ещё одно​xltools.exe​ — «С сервера​ динамическую ссылку на​3) Использовал резервированную​ Responsible, GroupSub, DateStart,​ еще дописать Set​ cnORA = New​ для подключения к​ Один цели запросов на​ XLTools, в целом,​ установить само подключение.​ базы данных перемещена​
    ​ окна отображаются файлы,​ настройки произведены, жмем​ и таблицу на​ которая находится в​ небольшое окошко, где​, следует приступить к​ SQL cервер» редактирование​ один (!) из​ переменную «Time» в​ DateEndPlan, Time, Deadline,​

    ​ rsORA = New​​ ADODB.Connection cnORA.Open ‘Provider=msdaora;’​ базе данных. Выберите​​ языке базы данных​​ все-таки несколько более​ Посмотрим, как это​ на лист. Затем​ расположенные в текущем​ на кнопку​ древе данных, к​ поле​​ нужно указать своё​
    ​ его установке. Для​

    Запрос из Excel к SQL серверу (Иное/Other)

    ​ поля «текст команды»​​ столбцов известной таблицы.​ качестве имени поля.​
    ​ Importance, Status, DateEndFact,​ as ADODB.Recordset, чтобы​
    ​ + _ ‘Data​ режим проверки подлинности​ — не стороне​
    ​ продвинутые, чем у​ сделать.​ перемещаемся во вкладку​ каталоге, если они​
    ​«Выполнить»​ которой будет формироваться​«Укажите расположение данных таблицы»​ имя и фамилию​ запуска инсталлятора нужно​ было доступно, но​4. Что делаю:​4) Формат даты​ TaskShortText, TaskFullText) values​ инициализировать переменную. Я​ Source=имя базы;’ +​ и продолжить.​
    ​ действием. Тем не​ встроенных инструментов Excel.​Запускаем программу Excel и​«Данные»​ имеют расширение mdb​в нижней части​
    ​ запрос.​

    ​. Также нужно обратить​​ (можно псевдоним) и​
    ​ произвести двойной щелчок​ после нажатия кнопки​ Раздел «Данные» -​
    ​ американский «mm.dd.yy»​ (0, 1, False,​ просто забыл это​ _ ‘User >​ менее Power Query​ Главный же недостаток​
    ​ переходим во вкладку​
    ​и щелкаем по​ или accdb. Именно​ окна. После этого​В правой области окна,​ внимание, чтобы около​ электронную почту. После​ левой кнопки мыши​ «Ок» показывало средний​ «Из других источников»​
    ​Проблема решена.​ 16, 17, ‘ПФА​
    ​ указать, сорри :-)​ пользователя;’ + _​
    ​ Если не имеет доступа​ не гарантирует, что​ XLTools заключается в​

    ​«Данные»​​ кнопке​ в этой области​ введенная операция будет​ которая занимает его​ пункта​ этого жмите на​ по установочному файлу.​ палец. ​ — «С сервера​По поводу убогости​ и прогноз’, 42744,​Sinister​​ ‘Password=пароль;’ ‘Получаем данные​ к источнику данных​ запрос не влияет​ том, что срок​. После этого щелкаем​«Подключения»​ нужно выбрать наименование​ произведена.​ большую часть, располагается​«Таблица с заголовками»​

    Источник

    Содержание

    • Создание SQL запроса в Excel
      • Способ 1: использование надстройки
      • Способ 2: использование встроенных инструментов Excel
      • Способ 3: подключение к серверу SQL Server
    • Вопросы и ответы

    SQL в Microsoft Excel

    SQL – популярный язык программирования, который применяется при работе с базами данных (БД). Хотя для операций с базами данных в пакете Microsoft Office имеется отдельное приложение — Access, но программа Excel тоже может работать с БД, делая SQL запросы. Давайте узнаем, как различными способами можно сформировать подобный запрос.

    Читайте также: Как создать базу данных в Экселе

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

    Способ 1: использование надстройки

    Но для начала давайте рассмотрим вариант, когда из Экселя можно создать SQL запрос не с помощью стандартного инструментария, а воспользовавшись сторонней надстройкой. Одной из лучших надстроек, выполняющих эту задачу, является комплекс инструментов XLTools, который кроме указанной возможности, предоставляет массу других функций. Правда, нужно заметить, что бесплатный период пользования инструментом составляет всего 14 дней, а потом придется покупать лицензию.

    Скачать надстройку XLTools

    1. После того, как вы скачали файл надстройки xltools.exe, следует приступить к его установке. Для запуска инсталлятора нужно произвести двойной щелчок левой кнопки мыши по установочному файлу. После этого запустится окно, в котором нужно будет подтвердить согласие с лицензионным соглашением на использование продукции компании Microsoft — NET Framework 4. Для этого всего лишь нужно кликнуть по кнопке «Принимаю» внизу окошка.
    2. Принятие лицензиного соглашение на использование компонента Microsoft NET Framework 4

    3. После этого установщик производит загрузку обязательных файлов и начинает процесс их установки.
    4. Загрузка обязательных файлов

    5. Далее откроется окно, в котором вы должны подтвердить свое согласие на установку этой надстройки. Для этого нужно щелкнуть по кнопке «Установить».
    6. Окно подтверждения согласия на установку надстройки

    7. Затем начинается процедура установки непосредственно самой надстройки.
    8. Установка надстройки

    9. После её завершения откроется окно, в котором будет сообщаться, что инсталляция успешно выполнена. В указанном окне достаточно нажать на кнопку «Закрыть».
    10. Закрытие окна установщика надстройки

    11. Надстройка установлена и теперь можно запускать файл Excel, в котором нужно организовать SQL запрос. Вместе с листом Эксель открывается окно для ввода кода лицензии XLTools. Если у вас имеется код, то нужно ввести его в соответствующее поле и нажать на кнопку «OK». Если вы желаете использовать бесплатную версию на 14 дней, то следует просто нажать на кнопку «Пробная лицензия».
    12. Окно лицензии надстройки XLTools

    13. При выборе пробной лицензии открывается ещё одно небольшое окошко, где нужно указать своё имя и фамилию (можно псевдоним) и электронную почту. После этого жмите на кнопку «Начать пробный период».
    14. Окно активации пробного периода надстройки XLTools

    15. Далее мы возвращаемся к окну лицензии. Как видим, введенные вами значения уже отображаются. Теперь нужно просто нажать на кнопку «OK».
    16. Активация пробной лицензии надстройки XLTools

    17. После того, как вы проделаете вышеуказанные манипуляции, в вашем экземпляре Эксель появится новая вкладка – «XLTools». Но не спешим переходить в неё. Прежде, чем создавать запрос, нужно преобразовать табличный массив, с которым мы будем работать, в так называемую, «умную» таблицу и присвоить ей имя.
      Для этого выделяем указанный массив или любой его элемент. Находясь во вкладке «Главная» щелкаем по значку «Форматировать как таблицу». Он размещен на ленте в блоке инструментов «Стили». После этого открывается список выбора различных стилей. Выбираем тот стиль, который вы считаете нужным. На функциональность таблицы указанный выбор никак не повлияет, так что основывайте свой выбор исключительно на основе предпочтений визуального отображения.
    18. Переход к созданию умной таблицы в Microsoft Excel

      Lumpics.ru

    19. Вслед за этим запускается небольшое окошко. В нем указываются координаты таблицы. Как правило, программа сама «подхватывает» полный адрес массива, даже если вы выделили только одну ячейку в нем. Но на всякий случай не мешает проверить ту информацию, которая находится в поле «Укажите расположение данных таблицы». Также нужно обратить внимание, чтобы около пункта «Таблица с заголовками», стояла галочка, если заголовки в вашем массиве действительно присутствуют. Затем жмите на кнопку «OK».
    20. Окно форматирования таблицы в Microsoft Excel

    21. После этого весь указанный диапазон будет отформатирован, как таблица, что повлияет как на его свойства (например, растягивание), так и на визуальное отображение. Указанной таблице будет присвоено имя. Чтобы его узнать и по желанию изменить, клацаем по любому элементу массива. На ленте появляется дополнительная группа вкладок – «Работа с таблицами». Перемещаемся во вкладку «Конструктор», размещенную в ней. На ленте в блоке инструментов «Свойства» в поле «Имя таблицы» будет указано наименование массива, которое ему присвоила программа автоматически.
    22. Наименование таблицы по умолчанию в Microsoft Excel

    23. При желании это наименование пользователь может изменить на более информативное, просто вписав в поле с клавиатуры желаемый вариант и нажав на клавишу Enter.
    24. Измененное наименование таблицы в Microsoft Excel

    25. После этого таблица готова и можно переходить непосредственно к организации запроса. Перемещаемся во вкладку «XLTools».
    26. Переход во вкладку XLTools в Microsoft Excel

    27. После перехода на ленте в блоке инструментов «SQL запросы» щелкаем по значку «Выполнить SQL».
    28. Переход в окно выполнения SQL надстройки XLTools в программе Microsoft Excel

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

      В правой области окна, которая занимает его большую часть, располагается сам редактор SQL запросов. В нем нужно писать программный код. Наименования столбцов выбранной таблицы там уже будут отображаться автоматически. Выбор столбцов для обработки производится с помощью команды SELECT. Нужно оставить в перечне только те колонки, которые вы желаете, чтобы указанная команда обрабатывала.

      Далее пишется текст команды, которую вы хотите применить к выбранным объектам. Команды составляются при помощи специальных операторов. Вот основные операторы SQL:

      • ORDER BY – сортировка значений;
      • JOIN – объединение таблиц;
      • GROUP BY – группировка значений;
      • SUM – суммирование значений;
      • DISTINCT – удаление дубликатов.

      Кроме того, в построении запроса можно использовать операторы MAX, MIN, AVG, COUNT, LEFT и др.

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

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

    Окно выполнения SQL запроса надстройкой XLTools в Microsoft Excel

    Урок: «Умные» таблицы в Экселе

    Способ 2: использование встроенных инструментов Excel

    Существует также способ создать SQL запрос к выбранному источнику данных с помощью встроенных инструментов Эксель.

    1. Запускаем программу Excel. После этого перемещаемся во вкладку «Данные».
    2. Переход во вкладку Данные в Microsoft Excel

    3. В блоке инструментов «Получение внешних данных», который расположен на ленте, жмем на значок «Из других источников». Открывается список дальнейших вариантов действий. Выбираем в нем пункт «Из мастера подключения данных».
    4. Переход в Мастер подключения данных в Microsoft Excel

    5. Запускается Мастер подключения данных. В перечне типов источников данных выбираем «ODBC DSN». После этого щелкаем по кнопке «Далее».
    6. Окно Мастера подключения данных в Microsoft Excel

    7. Открывается окно Мастера подключения данных, в котором нужно выбрать тип источника. Выбираем наименование «MS Access Database». Затем щелкаем по кнопке «Далее».
    8. Окно выбора типа источника Мастера подключения данных в Microsoft Excel

    9. Открывается небольшое окошко навигации, в котором следует перейти в директорию расположения базы данных в формате mdb или accdb и выбрать нужный файл БД. Навигация между логическими дисками при этом производится в специальном поле «Диски». Между каталогами производится переход в центральной области окна под названием «Каталоги». В левой области окна отображаются файлы, расположенные в текущем каталоге, если они имеют расширение mdb или accdb. Именно в этой области нужно выбрать наименование файла, после чего кликнуть на кнопку «OK».
    10. Окно выбора базы данных в Microsoft Excel

    11. Вслед за этим запускается окно выбора таблицы в указанной базе данных. В центральной области следует выбрать наименование нужной таблицы (если их несколько), а потом нажать на кнопку «Далее».
    12. Окно выбора таблицы базы данных в Microsoft Excel

    13. После этого открывается окно сохранения файла подключения данных. Тут указаны основные сведения о подключении, которое мы настроили. В данном окне достаточно нажать на кнопку «Готово».
    14. Окно сохранения файла подключения данных в Microsoft Excel

    15. На листе Excel запускается окошко импорта данных. В нем можно указать, в каком именно виде вы хотите, чтобы данные были представлены:
      • Таблица;
      • Отчёт сводной таблицы;
      • Сводная диаграмма.

      Выбираем нужный вариант. Чуть ниже требуется указать, куда именно следует поместить данные: на новый лист или на текущем листе. В последнем случае предоставляется также возможность выбора координат размещения. По умолчанию данные размещаются на текущем листе. Левый верхний угол импортируемого объекта размещается в ячейке A1.

      После того, как все настройки импорта указаны, жмем на кнопку «OK».

    16. Окно импорта данных в Microsoft Excel

    17. Как видим, таблица из базы данных перемещена на лист. Затем перемещаемся во вкладку «Данные» и щелкаем по кнопке «Подключения», которая размещена на ленте в блоке инструментов с одноименным названием.
    18. Переход в окно подключений в Microsoft Excel

    19. После этого запускается окно подключения к книге. В нем мы видим наименование ранее подключенной нами базы данных. Если подключенных БД несколько, то выбираем нужную и выделяем её. После этого щелкаем по кнопке «Свойства…» в правой части окна.
    20. Переход в свойства базы данных в Microsoft Excel

    21. Запускается окно свойств подключения. Перемещаемся в нем во вкладку «Определение». В поле «Текст команды», находящееся внизу текущего окна, записываем SQL команду в соответствии с синтаксисом данного языка, о котором мы вкратце говорили при рассмотрении Способа 1. Затем жмем на кнопку «OK».
    22. Окно свойств подключения в Microsoft Excel

    23. После этого производится автоматический возврат к окну подключения к книге. Нам остается только кликнуть по кнопке «Обновить» в нем. Происходит обращение к базе данных с запросом, после чего БД возвращает результаты его обработки назад на лист Excel, в ранее перенесенную нами таблицу.

    Отправка запроса к базе данных в окне подключения к книге в Microsoft Excel

    Способ 3: подключение к серверу SQL Server

    Кроме того, посредством инструментов Excel существует возможность соединения с сервером SQL Server и посыла к нему запросов. Построение запроса не отличается от предыдущего варианта, но прежде всего, нужно установить само подключение. Посмотрим, как это сделать.

    1. Запускаем программу Excel и переходим во вкладку «Данные». После этого щелкаем по кнопке «Из других источников», которая размещается на ленте в блоке инструментов «Получение внешних данных». На этот раз из раскрывшегося списка выбираем вариант «С сервера SQL Server».
    2. Переход к окну подключения к серверу SQL Server в Microsoft Excel

    3. Происходит открытие окна подключения к серверу баз данных. В поле «Имя сервера» указываем наименование того сервера, к которому выполняем подключение. В группе параметров «Учетные сведения» нужно определиться, как именно будет происходить подключение: с использованием проверки подлинности Windows или путем введения имени пользователя и пароля. Выставляем переключатель согласно принятому решению. Если вы выбрали второй вариант, то кроме того в соответствующие поля придется ввести имя пользователя и пароль. После того, как все настройки проведены, жмем на кнопку «Далее». После выполнения этого действия происходит подключение к указанному серверу. Дальнейшие действия по организации запроса к базе данных аналогичны тем, которые мы описывали в предыдущем способе.

    Окно Мастера подключения данных в программе Microsoft Excel

    Как видим, в Экселе SQL запрос можно организовать, как встроенными инструментами программы, так и при помощи сторонних надстроек. Каждый пользователь может выбрать тот вариант, который удобнее для него и является более подходящим для решения конкретно поставленной задачи. Хотя, возможности надстройки XLTools, в целом, все-таки несколько более продвинутые, чем у встроенных инструментов Excel. Главный же недостаток XLTools заключается в том, что срок бесплатного пользования надстройкой ограничен всего двумя календарными неделями.

    Еще статьи по данной теме:

    Помогла ли Вам статья?

    Microsoft Access: Use ADO to Execute SQL statements

    Microsoft Access: ActiveX Data Objects (ADO), Connect with Access Databases from Excel using VBA.

    Part 2 of 4


    Microsoft Access: ActiveX Data Objects (ADO), Connect with Access Databases from Excel using VBA:

    1. Microsoft Access: ActiveX Data Objects Library (ADO).

    2. Microsoft Access: Use ADO to Execute SQL statements.

    3. Import or Export Data from Access to Excel using ADO.

    4. Microsoft Access: ActiveX Data Objects Extensions (ADOX).

    —————

    Also Read:

    Microsoft Access: Data Access Objects Library (DAO), Connect with Access Databases from Excel using VBA.


    —————————————————————————————————————-

    Contents:

    Use ADO to Execute SQL statements to Manage your Database

    SQL Commands explained

    Using the ADO connection Execute method to execute the specified query and SQL statements

    Use the OpenSchema Method to access information about database tables and columns

    Create a database table using ADO, with SQL statements

    ADO Find Method — Find or Locate a specific Record

    ADO Filter Property to FilterRecords

    —————————————————————————————————————

    Use ADO to Execute SQL statements to Manage your Database

    You can use ADO to execute SQL commands to manipulate data and manage your database. Using SQL requires that the data should be entered as per the table structure, the columns sequence and their data type. SQL, stands for Structured Query Language, is a computer language, and SQL statements are used to store, retrieve and manipulate data in a relational database ex. Access Database.

    A relational database has multiple tables, each table comprising of columns (fields) and rows wherein data can be grouped using common attributes, and from which data can be easily retrieved. The multiple tables relate to and work with each other through certain key fields (like unique «ID Nos») viz. a separate table is created for vendor-details and another table for purchase-orders wherein vendor details are not repeated each time a purchase order is made and they are related with each other through a unique «Vendor ID» column which is present in both tables. Whereas flat file databases contain a single table of data with fields representing all parameters viz. a single table will contain details of vendors and purchase orders made, and with each purchase order the vendor details also get repeated resulting in duplication. Flat file databases though easier to maintain, are far less robust and flexible.

    A Database Management System (DBMS) is a program which manages data in databases, the manner in which data is created, stored, modified and accessed. A Relational Database Management System (RDBMS) is the DBMS in respect of a relational database. Microsoft Access is a popular RDBMS which supports creating relational databases.
    Other examples of DBMS are MySQL, Microsoft SQL Server, Oracle, etc.

    In SQL, you can use DDL or DML statements. DDL (stands for Data Definition Language) statements are used to make structural changes, to define the database structure and objects like tables and columns. Examples of some often used DDL commands are CREATE TABLE, DROP TABLE and ALTER TABLE. DML statements are used to managing and manipulating data within the database structure and deal with inserting, updating, deleteing and retrieving database information like records in tables. Examples of often used DML commands are include INSERT, SELECT, UPDATE and DELETE.

    SQL Commands explained:

    The SQL SELECT Statement (the most commonly used SQL command) selects data from a database, specifying column(s) headings, table(s) from which columns are to be selected, and the criteria for selection. SELECT * is used to select all columns from a table. The FROM clause in a SELECT statement specifies the Table from which columns are to be selected. The WHERE clause in a SELECT statement specifies the criteria for selection. Syntax: SELECT column_name FROM table_name [WHERE clause]. You can also add other optional clauses, viz. GROUP BY, HAVING and ORDER BY.

    Use the INSERT command to insert a new row/record at the end of a table.

    DELETE removes a specified row(s) from a table (in the DELETE statement, FROM clause is required and WHERE clause is optional).

    TRUNCATE TABLE deletes all the rows from the table (does not have the WHERE clause), and the table structure remains.

    UPDATE modifies values of records in a table.

    CREATE TABLE creates a table with the specified fields.

    DROP TABLE deletes all rows and the table structure is removed from the database.

    ALTER TABLE is used to add, remove or modify columns in a table.

    Using the ADO connection Execute method to execute the specified query and SQL statements

    Execute Method (ADO Connection): The Execute method on the specified ADO connection object, executes the SQL statement passed in the CommandText argument. Note that Recordset object returned by the method is a read-only, forward-only cursor. Syntax: Set recordset = connection.Execute (CommandText, RecordsAffected, Options).

    CommandText is a string value, and is an SQL statement, stored procedure, or provider-specific text. RecordsAffected is an optional Long variable which indicates the number of records affected by the method. Options is an optional Long value which determines how the CommandText argument is evaluated: adCmdUnspecified —  indicates that the CommandText property is unspecified; adCmdText — evaluates CommandText as a textual definition of a command or stored procedure call; adCmdTable — evaluates CommandText as a table name whose columns are all returned by an SQL query; adCmdStoredProc — evaluates CommandText as a stored procedure name; adCmdUnknown (default) — type of command in the CommandText argument is not known; Values of adCmdFile or adCmdTableDirect are not to be used with the Execute Method.

    Example 2: Use ADO with SQL statements.

    Refer to Images 3a & 3b, as mentioned in the code.

    Sub automateAccessADO_2()
    ‘In this example we show how to use ADO with SQL statements:
    ‘1. Add and delete records using the ADO connection Execute method to execute SQL statements;
    ‘2. Select Records/Fields conditionally, using the ADO Recordset Open Method with SQL statements.

    ‘To use ADO in your VBA project, you must add a reference to the ADO Object Library in Excel (your host application) by clicking Tools-References in VBE, and then choose an appropriate version of Microsoft ActiveX Data Objects x.x Library from the list.

    ‘—————
    ‘DIM STATEMENTS

    Dim strMyPath As String, strDBName As String, strDB As String
    Dim strSQL As String

    ‘instantiate an ADO object using Dim with the New keyword:
    Dim adoRecSet As New ADODB.Recordset
    Dim connDB As New ADODB.Connection

    ‘—————
    ‘THE CONNECTION OBJECT

    strDBName = «SalesReport.accdb»
    strMyPath = ThisWorkbook.Path
    strDB = strMyPath & «» & strDBName

    ‘Connect to a data source:
    ‘For pre — MS Access 2007, .mdb files (viz. MS Access 97 up to MS Access 2003), use the Jet provider: «Microsoft.Jet.OLEDB.4.0». For Access 2007 (.accdb database) use the ACE Provider: «Microsoft.ACE.OLEDB.12.0». The ACE Provider can be used for both the Access .mdb & .accdb files.
    connDB.Open ConnectionString:=«Provider = Microsoft.ACE.OLEDB.12.0; data source=» & strDB

    ‘———————
    ‘CREATE AND DELETE RECORDS

    ‘Besides using ADO by itself for entering data (viz. using the AddNew method of the Recordset object) as shown earlier, you can also use ADO with SQL statements.

    ‘Refer Image 3a for SalesManager Table in MS Access file SalesReport.accdb; Image 3b shows the SalesManager Table after adding new record (before it is deleted).

    ‘add new records in the SalesManager Table using SQL INSERT INTO statements, by specifying both the column names and the values to be inserted. The Execute method on the specified ADO connection object, executes the SQL statement passed in the CommandText argument:
    connDB.Execute «INSERT INTO SalesManager (EmployeeId, FirstName, Surname, JoinDate) VALUES (2, ‘Mary’, ‘Smith’, ‘6/20/2009’)»
    ‘alternatively add a new record by specifying only the column values to be inserted:
    ‘connDB.Execute «INSERT INTO SalesManager VALUES (2, ‘Mary’, ‘Smith’, ‘6/20/2009’)»

    ‘delete records in the SalesManager Table:
    strSQL = «DELETE FROM SalesManager WHERE FirstName = ‘Mary’«
    connDB.Execute CommandText:=strSQL

    ‘Value of 0 will be returned which indicates that the recordset is closed, because it was never opened (value of 1 indicates that the recordset is open):
    MsgBox adoRecSet.State

    ‘———————
    ‘SELECT RECORDS / FIELDS CONDITIONALLY

    ‘Refer Image 3a for SalesManager Table in MS Access file SalesReport.accdb, for below codes.

    ‘select a specific field (FirstName), basis numeric reference:
    strSQL = «SELECT FirstName FROM SalesManager WHERE EmployeeId = 18″
    adoRecSet.Open Source:=strSQL, ActiveConnection:=connDB, CursorType:=adOpenDynamic, LockType:=adLockOptimistic
    ‘returns «Tracy»:
    MsgBox adoRecSet.Fields(«FirstName»)
    adoRecSet.Close

    ‘select a specific field (FirstName), basis text reference:
    strSQL = «SELECT FirstName FROM SalesManager WHERE SurName = ‘Green’«
    adoRecSet.Open Source:=strSQL, ActiveConnection:=connDB, CursorType:=adOpenDynamic, LockType:=adLockOptimistic
    ‘returns «Sam»:
    MsgBox adoRecSet.Fields(«FirstName»)
    adoRecSet.Close

    ‘select multiple fields, basis numeric reference:
    strSQL = «SELECT FirstName, SurName, JoinDate FROM SalesManager WHERE EmployeeId = 18″
    adoRecSet.Open Source:=strSQL, ActiveConnection:=connDB, CursorType:=adOpenDynamic, LockType:=adLockOptimistic
    ‘returns «Tracy Murray 7/16/2011»:
    MsgBox adoRecSet.Fields(«FirstName») & » » & adoRecSet.Fields(«SurName») & » » & adoRecSet.Fields(«JoinDate»)
    adoRecSet.Close

    ‘select a specific field, basis multiple criteria (delimit date values by the datetime delimiter «#»):
    ‘to select a range between two dates, the BETWEEN operator has been used in the WHERE clause.
    strSQL = «SELECT EmployeeId FROM SalesManager WHERE SurName = ‘Green’ and JoinDate between #08/3/2012# and #10/3/2013#»
    adoRecSet.Open Source:=strSQL, ActiveConnection:=connDB, CursorType:=adOpenDynamic, LockType:=adLockOptimistic
    ‘returns «56»:
    MsgBox adoRecSet.Fields(«EmployeeId»)
    adoRecSet.Close

    ‘select all fields, basis text reference:
    strSQL = «SELECT * FROM SalesManager WHERE SurName = ‘Kelly’«
    adoRecSet.Open Source:=strSQL, ActiveConnection:=connDB, CursorType:=adOpenDynamic, LockType:=adLockOptimistic
    ‘returns «35 David Kelly 1/24/2010»:
    MsgBox adoRecSet.Fields(«EmployeeId») & » » & adoRecSet.Fields(«FirstName») & » » & adoRecSet.Fields(«SurName») & » » & adoRecSet.Fields(«JoinDate»)
    adoRecSet.Close

    ‘select all fields, basis criteria specified using the Like operator:
    ‘The Like operator compares two strings, if the value in the string matches the pattern, it returns True. The percent sign (%) indicates zero or more characters after J ie. the criteria is if the first name starts with J:
    ‘Note that in the WHERE clause of SQL statement, percent (%) is used as a wild character instead of an asterisk (*), indicating zero or more characters after J. In the WHERE clause of SQL statement, use underscore (_) to indicate a single character.
    strSQL = «SELECT * FROM SalesManager WHERE FirstName Like ‘J%'»
    adoRecSet.Open Source:=strSQL, ActiveConnection:=connDB, CursorType:=adOpenDynamic, LockType:=adLockOptimistic

    ‘return all instances where criteria (WHERE FirstName Like ‘J%’) is met — «Mason» & «Davis»:
    Do While Not adoRecSet.EOF

    MsgBox adoRecSet.Fields(«Surname»)

    adoRecSet.MoveNext

    Loop

    adoRecSet.Close

    ‘——————
    ‘close the objects
    connDB.Close

    ‘destroy the variables
    Set adoRecSet = Nothing
    Set connDB = Nothing

    End Sub

    Example 3: Edit Records, using ADO with SQL statements.

    Refer to Images 4a & 4b, as mentioned in the code.

    Sub automateAccessADO_3()
    ‘In this example we show how to Edit Records, using ADO with SQL statements:
    ‘Refer Image 4a for SalesManager Table in MS Access file SalesReport.accdb before edit, and Refer Image 4b after edit.

    ‘To use ADO in your VBA project, you must add a reference to the ADO Object Library in Excel (your host application) by clicking Tools-References in VBE, and then choose an appropriate version of Microsoft ActiveX Data Objects x.x Library from the list.

    ‘—————
    ‘DIM STATEMENTS

    Dim strMyPath As String, strDBName As String, strDB As String
    Dim strSQL As String

    ‘instantiate an ADO object using Dim with the New keyword:
    Dim adoRecSet As New ADODB.Recordset
    Dim connDB As New ADODB.Connection

    ‘—————
    ‘THE CONNECTION OBJECT

    strDBName = «SalesReport.accdb»
    strMyPath = ThisWorkbook.Path
    strDB = strMyPath & «» & strDBName

    ‘Connect to a data source:
    ‘For pre — MS Access 2007, .mdb files (viz. MS Access 97 up to MS Access 2003), use the Jet provider: «Microsoft.Jet.OLEDB.4.0». For Access 2007 (.accdb database) use the ACE Provider: «Microsoft.ACE.OLEDB.12.0». The ACE Provider can be used for both the Access .mdb & .accdb files.
    connDB.Open ConnectionString:=«Provider = Microsoft.ACE.OLEDB.12.0; data source=» & strDB

    ‘—————
    ‘SEARCH RECORDS BASIS SPECIFIED CRITERIA AND EDIT THEM

    ‘select all fields, basis JoinDate criteria:
    strSQL = «SELECT * FROM SalesManager WHERE JoinDate >= #01/01/2010#»
    adoRecSet.Open Source:=strSQL, ActiveConnection:=connDB, CursorType:=adOpenDynamic, LockType:=adLockOptimistic

    ‘return all instances where criteria (WHERE JoinDate >= #01/01/2010#) is met, and marks their FirstName & Surname with «M»:
    Do While Not adoRecSet.EOF

    adoRecSet.Fields(«FirstName») = adoRecSet.Fields(«FirstName») & » — M»
    adoRecSet.Fields(«Surname») = adoRecSet.Fields(«Surname») & » — M»

    adoRecSet.MoveNext

    Loop

    ‘——————
    ‘close the objects
    adoRecSet.Close
    connDB.Close

    ‘destroy the variables
    Set adoRecSet = Nothing
    Set connDB = Nothing

    End Sub

    Use the OpenSchema Method to access information about database tables and columns

    The OpenSchema Method returns a Recordset object containing schema (structure) information about the database, like the tables and columns in the database and the supported data types. Syntax: Set recordset = connection.OpenSchema(QueryType, Criteria, SchemaID).

    The first argument in the OpenSchema Method which is a must, is the type of schema required which is a SchemaEnum value (ie. an enumerated value) which specifies the type of Recordset returned by the method. Examples include adSchemaTables which returns the tables defined in the catalog, and adSchemaColumns which returns the columns of tables defined in the catalog.

    To limit the results of the schema query, use the Criteria argument (this is the second parameter in the OpenSchema Method, and is optional) which specifies an array of values (ie. query constraints).
    Query constraints (ie. criteria) in the SchemaEnum of adSchemaTables are: TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE.
    Query constraints (ie. criteria) in the SchemaEnum of adSchemaColumns are: TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME.

    The third argument of SchemaID is used only if the first argument is set to adSchemaProviderSpecific.

    Example 4: Use the OpenSchema Method to access information about the database tables and columns.

    Refer to Image 5, as mentioned in the code.

    Sub automateAccessADO_4()
    ‘Use the OpenSchema Method to access information about the database tables and columns.

    ‘To use ADO in your VBA project, you must add a reference to the ADO Object Library in Excel (your host application) by clicking Tools-References in VBE, and then choose an appropriate version of Microsoft ActiveX Data Objects x.x Library from the list.

    ‘—————
    ‘DIM STATEMENTS

    Dim strMyPath As String, strDBName As String, strDB As String

    ‘instantiate an ADO object using Dim with the New keyword:
    Dim adoRecSet As New ADODB.Recordset
    Dim connDB As New ADODB.Connection

    ‘—————
    ‘THE CONNECTION OBJECT

    strDBName = «SalesReport.accdb»
    strMyPath = ThisWorkbook.Path
    strDB = strMyPath & «» & strDBName

    ‘Connect to a data source:
    ‘For pre — MS Access 2007, .mdb files (viz. MS Access 97 up to MS Access 2003), use the Jet provider: «Microsoft.Jet.OLEDB.4.0». For Access 2007 (.accdb database) use the ACE Provider: «Microsoft.ACE.OLEDB.12.0». The ACE Provider can be used for both the Access .mdb & .accdb files.
    connDB.Open ConnectionString:=«Provider = Microsoft.ACE.OLEDB.12.0; data source=» & strDB

    ‘—————
    ‘ACCESS INFORMATION ABOUT THE DATABASE TABLES AND COLUMNS

    ‘Refer Image 5 for SalesManager Table in MS Access file SalesReport.accdb which also contains another Table named Performance.

    ‘code to get names of all tables in a database — returns table names ‘Performance’ & ‘SalesManager’:
    ‘query constraint of TABLE_TYPE is specified as «TABLE»
    Set adoRecSet = connDB.OpenSchema(adSchemaTables, Array(Empty, Empty, Empty, «TABLE»))

    Do While Not adoRecSet.EOF

    MsgBox adoRecSet.Fields(«TABLE_NAME»).Value

    adoRecSet.MoveNext

    Loop

    adoRecSet.Close

    ‘alternate code to get names of all tables in a database — returns table names ‘Performance’ & ‘SalesManager’:

    Set adoRecSet = connDB.OpenSchema(adSchemaTables)

    Do While Not adoRecSet.EOF

    If adoRecSet.Fields(«TABLE_TYPE») = «TABLE» Then

    MsgBox adoRecSet.Fields(«TABLE_NAME»).Value

    End If

    adoRecSet.MoveNext

    Loop

    adoRecSet.Close

    ‘to get names of all fields of a specified table («SalesManager»):
    ‘Field Names returned are: EmployeeId, FirstName, Surname & JoinDate.

    Set adoRecSet = connDB.OpenSchema(adSchemaColumns, Array(Empty, Empty, «SalesManager», Empty))

    Do While Not adoRecSet.EOF

    MsgBox adoRecSet.Fields(«COLUMN_NAME»).Value

    adoRecSet.MoveNext

    Loop

    adoRecSet.Close

    ‘—————
    ‘close the objects
    connDB.Close

    ‘destroy the variables
    Set adoRecSet = Nothing
    Set connDB = Nothing

    End Sub

    Create a database table using ADO, with SQL statements

    Note that ADO does not by itself support creating database tables, which is actually done with ADOX. However, you can create a database table in ADO using SQL.

    SQL CREATE TABLE statement creates a table with the specified fields. SQL INSERT INTO statement inserts a new row/record at the end of the table.

    While using the SQL CREATE TABLE statement, you specify the Table Name, Field Names and their Data Types. Commonly used data types for fields include: TEXT (SIZE) for Text Field; CHAR (SIZE) for Text Field; SHORT for Numbers-Integer; LONG for Numbers-Long; SINGLE for Numbers-Single; DOUBLE for Numbers-Double; CURRENCY for Currency; DATE for Date/Time; DATETIME for Date/Time; YESNO for Boolean values; and so on.

    Use the CONSTRAINT clause in SQL statements, to create a constraint on one or more fields:

    Specifying the PRIMARY KEY (can be only one in a Table) reserved word designates a field(s) as a primary field whose values will be unique and cannot be Null.

    Specifying NOT NULL for a field will necessitate the new record to have valid data in that field. A table column, by default, can have a NULL value ie. a field can contain no value.

    Specifying the UNIQUE reserved word will not allow a same value in that field, for two records in the table.

    Example 5: Create a New Database Table using ADO, with SQL statements.

    Refer to Image 6, as mentioned in the code.

    Sub automateAccessADO_5()
    ‘Create a new database table using ADO with SQL statements.

    ‘To use ADO in your VBA project, you must add a reference to the ADO Object Library in Excel (your host application) by clicking Tools-References in VBE, and then choose an appropriate version of Microsoft ActiveX Data Objects x.x Library from the list.

    ‘—————
    ‘DIM STATEMENTS

    Dim strMyPath As String, strDBName As String, strDB As String

    ‘instantiate an ADO object using Dim with the New keyword:
    Dim adoRecSet As New ADODB.Recordset
    Dim connDB As New ADODB.Connection

    ‘—————
    ‘THE CONNECTION OBJECT

    strDBName = «SalesReport.accdb»
    strMyPath = ThisWorkbook.Path
    strDB = strMyPath & «» & strDBName

    ‘Connect to a data source:
    ‘For pre — MS Access 2007, .mdb files (viz. MS Access 97 up to MS Access 2003), use the Jet provider: «Microsoft.Jet.OLEDB.4.0». For Access 2007 (.accdb database) use the ACE Provider: «Microsoft.ACE.OLEDB.12.0». The ACE Provider can be used for both the Access .mdb & .accdb files.
    connDB.Open ConnectionString:=«Provider = Microsoft.ACE.OLEDB.12.0; data source=» & strDB

    ‘—————
    ‘CHECK IF THE NEW TABLE NAME IS PRE-EXISTING IN DATABASE, AND DELETE IF FOUND

    ‘check if the table named SalesManager exists in database, and delete if found:

    Set adoRecSet = connDB.OpenSchema(adSchemaTables, Array(Empty, Empty, Empty, «TABLE»))

    Do While Not adoRecSet.EOF

    If adoRecSet.Fields(«TABLE_NAME»).Value = «SalesManager» Then

    connDB.Execute «DROP TABLE SalesManager»

    End If

    adoRecSet.MoveNext

    Loop

    adoRecSet.Close

    ‘—————
    ‘CREATE A NEW TABLE IN DATABASE
    ‘Refer Image 6

    ‘Create a table named SalesManager, with field names and their data types (viz. the field named FirstName is of Text data type and can hold 40 characters).

    ‘add a PRIMARY KEY CONSTRAINT named ‘pk_EI’ for the column ‘EmployeeID’ of the ‘SalesManager’ table; also add a UNIQUE CONSTRAINT named ‘un_FN’ for the column ‘FirstName’ of the ‘SalesManager’ table.

    connDB.Execute «CREATE TABLE SalesManager(EmployeeId LONG, FirstName Text(40), Surname Char(50) NOT NULL, JoinDate Date, Sales Double, CONSTRAINT pk_EI PRIMARY KEY (EmployeeID), CONSTRAINT un_FN UNIQUE (FirstName))»

    ‘Populate the table using SQL INSERT INTO statements, without specifying the column names but only their values:
    connDB.Execute «INSERT INTO SalesManager VALUES (256, ‘Mary’, ‘Lange’, ‘7/24/2008’, 15678.58)»
    connDB.Execute «INSERT INTO SalesManager VALUES (587, ‘Harry’, ‘Davis’, ‘7/16/2011’, 14673.26)»
    connDB.Execute «INSERT INTO SalesManager VALUES (01, ‘James’, ‘Bond’, ‘3/11/2009’, 12589)»

    ‘Populate the table using SQL INSERT INTO statements, by specifying both the column names and the values to be inserted:
    connDB.Execute «INSERT INTO SalesManager (EmployeeId, FirstName, Surname, JoinDate, Sales) VALUES (445, ‘John’, ‘Morgan’, ‘1/24/2010’, 12432.20)»
    connDB.Execute «INSERT INTO SalesManager (EmployeeId, FirstName, Surname, JoinDate, Sales) VALUES (25, ‘Dane’, ‘Large’, ’10/3/2012′, 9876.5)»

    ‘—————
    ‘close the objects
    connDB.Close

    ‘destroy the variables
    Set adoRecSet = Nothing
    Set connDB = Nothing

    End Sub

    ADO Find Method — Find or Locate a specific Record

    Find Method (ADO) searches for a row, in a set of records, basis specified criteria. Syntax: Find (Criteria, SkipRows, SearchDirection, Start).

    Criteria specifies the criteria for finding the record. This argument is rquired whle all others are optional. Note that only one criteria is supported by the ADO Find method.

    SkipRows specifies the number of records to be skipped, where the deafult value is 0 wherein the current record is not skipped.

    Use the default SearchDirection value of adSearchForward to search forward from the current record, and if a match is not found the position of the record pointer is at EOF ie. after the last record in the set of records. To search backward, use the value of adSearchBackward and if a match is not found the position of the record pointer is at BOF ie. before the first record in the set of records.

    Start argument sets a current row position before starting a search. Default value of adBookmarkCurrent indicates the current record, value of adBookmarkFirst indicates the first record and value of adBookmarkLast indicates the last record.

    Note: On a match being found, the found record becomes the the current row position, and because the search starts from the current row, you must either skip a record OR move to the next record to do a new find for the next match.

    Example 6: Using the Find method to find or locate a specific record(s).

    Refer to Image 7, as mentioned in the code.

    Sub automateAccessADO_6()
    ‘Using the Find method to find or locate a specific record(s).

    ‘To use ADO in your VBA project, you must add a reference to the ADO Object Library in Excel (your host application) by clicking Tools-References in VBE, and then choose an appropriate version of Microsoft ActiveX Data Objects x.x Library from the list.

    ‘—————
    ‘DIM STATEMENTS

    Dim strMyPath As String, strDBName As String, strDB As String

    ‘instantiate an ADO object using Dim with the New keyword:
    Dim adoRecSet As New ADODB.Recordset
    Dim connDB As New ADODB.Connection

    ‘—————
    ‘THE CONNECTION OBJECT

    strDBName = «SalesReport.accdb»
    strMyPath = ThisWorkbook.Path
    strDB = strMyPath & «» & strDBName

    ‘Connect to a data source:
    ‘For pre — MS Access 2007, .mdb files (viz. MS Access 97 up to MS Access 2003), use the Jet provider: «Microsoft.Jet.OLEDB.4.0». For Access 2007 (.accdb database) use the ACE Provider: «Microsoft.ACE.OLEDB.12.0». The ACE Provider can be used for both the Access .mdb & .accdb files.
    connDB.Open ConnectionString:=«Provider = Microsoft.ACE.OLEDB.12.0; data source=» & strDB

    ‘—————
    ‘USE FIND METHOD
    ‘Refer Image 7 to view the SalesManager Table in MS Access file «SalesReport.accdb»

    ‘open Recordset ie. SalesManager Table:
    adoRecSet.Open Source:=«SalesManager», ActiveConnection:=connDB, CursorType:=adOpenKeyset, LockType:=adLockOptimistic

    ‘note that only one criteria is supported by the ADO Find method:
    adoRecSet.Find «EmployeeID > 8», , adSearchForward

    Do While Not adoRecSet.EOF

    ‘using an IF statement, for search with an additional criteria of FirstName starting with J within the Search criteria of EmployeeID > 8:
    ‘Note that the J* indicates all words starting with the letter J followed by zero or more characters in the IF statement, but in the WHERE clause of an SQL statement it will be used as J% (percent is used as a wild character instead of an asterisk, indicating zero or more characters after J) viz. «FirstName LIKE ‘J%'».

    If adoRecSet.Fields(«FirstName») Like «J*» Then

    ‘2 records are found using the Find Method: John Mason, Employee Id:12; Jim Davis, Employee Id:21.

    MsgBox adoRecSet.Fields(«FirstName») & » » & adoRecSet.Fields(«Surname») & «, Employee Id:» & adoRecSet.Fields(«EmployeeId»)

    i = i + 1

    End If

    ‘on a match being found, the found record becomes the the current row position, and because the search starts from the current row, you must either skip a record OR move to the next record to do a new find for the next match:
    adoRecSet.MoveNext
    adoRecSet.Find «EmployeeID > 8», , adSearchForward
    ‘OR skip 1 row:
    ‘adoRecSet.Find «EmployeeID > 8», 1, adSearchForward

    Loop

    ‘2 records are found
    MsgBox «Records found: » & i

    ‘—————
    ‘close the objects
    connDB.Close

    ‘destroy the variables
    Set adoRecSet = Nothing
    Set connDB = Nothing

    End Sub

    ADO Filter Property to FilterRecords

    Filter database table records, using the Filter Property (ADO) on a recordset. Use a filter when you want to screen out selective records in a table. Syntax: recordset.Filter = Criteria.

    The Criteria string contains clauses in the format of «FirstName = ‘Jim’» where FirstName is the Column or Field Name, = is the Operator, and Jim is the Field Value. The Criteria string can have multiple conditions or clauses.

    The following operators can be used: <, >, <=, >=, <>, =, or LIKE.

    For field values: use single quotes for strings; «#» for date values; you can use wild cards asterisk (*) and percent (%), provided they are the last character in the string, for the LIKE operator.

    Example 7: Filter Records using the ADO Filter Property.

    Refer to Image 7, as mentioned in the code.

    Sub automateAccessADO_7()
    ‘Filter database table records, using the Filter Property (ADO) on a recordset. Use a filter when you want to screen out selective records in a table.

    ‘To use ADO in your VBA project, you must add a reference to the ADO Object Library in Excel (your host application) by clicking Tools-References in VBE, and then choose an appropriate version of Microsoft ActiveX Data Objects x.x Library from the list.

    ‘—————
    ‘DIM STATEMENTS

    Dim strMyPath As String, strDBName As String, strDB As String

    ‘instantiate an ADO object using Dim with the New keyword:
    Dim adoRecSet As New ADODB.Recordset
    Dim connDB As New ADODB.Connection

    ‘—————
    ‘THE CONNECTION OBJECT

    strDBName = «SalesReport.accdb»
    strMyPath = ThisWorkbook.Path
    strDB = strMyPath & «» & strDBName

    ‘Connect to a data source:
    ‘For pre — MS Access 2007, .mdb files (viz. MS Access 97 up to MS Access 2003), use the Jet provider: «Microsoft.Jet.OLEDB.4.0». For Access 2007 (.accdb database) use the ACE Provider: «Microsoft.ACE.OLEDB.12.0». The ACE Provider can be used for both the Access .mdb & .accdb files.
    connDB.Open ConnectionString:=«Provider = Microsoft.ACE.OLEDB.12.0; data source=» & strDB

    ‘—————
    ‘FILTER RECORDS
    ‘Refer Image 7 to view the SalesManager Table in MS Access file «SalesReport.accdb», used for below filter criteria.

    ‘Place the filter BEFORE opening the recordset.
    ‘You can use wild cards asterisk (*) and percent (%), provided they are the last character in the string, for the LIKE operator.
    ‘Examples of 5 valid filter criteria have been given below.

    ‘adoRecSet.Filter = «FirstName = ‘Jim’ OR EmployeeID > 35″
    ‘adoRecSet.Filter = «FirstName LIKE ‘J*'»
    ‘adoRecSet.Filter = «Surname LIKE ‘%a%'»
    ‘adoRecSet.Filter = «(FirstName = ‘Jim’ AND EmployeeID > 18) OR (Surname = ‘Green’ AND EmployeeID > 35)»
    adoRecSet.Filter = «(FirstName = ‘Jim’) OR (Surname = ‘Green’ AND EmployeeID > 35)»

    ‘Incorrect use of OR: you are not allowed to group clauses by the OR operator and then group these to another clause with the AND operator, in the following manner:
    ‘adoRecSet.Filter = «(FirstName = ‘Sam’) AND (FirstName = ‘Jim’ OR EmployeeID > 35)»

    adoRecSet.Open Source:=«SalesManager», ActiveConnection:=connDB, CursorType:=adOpenKeyset, LockType:=adLockOptimistic

    Do While Not adoRecSet.EOF

    MsgBox adoRecSet.Fields(«FirstName») & » » & adoRecSet.Fields(«Surname») & «, Employee Id:» & adoRecSet.Fields(«EmployeeId»)
    i = i + 1
    ‘on a match being found, the found record becomes the the current row position, and because the search starts from the current row, you must move to the next record to find the next match:
    adoRecSet.MoveNext

    Loop

    MsgBox «Records found: » & i

    ‘—————
    ‘close the objects
    connDB.Close

    ‘destroy the variables
    Set adoRecSet = Nothing
    Set connDB = Nothing

    End Sub

    Example 8: Using ADO with SQL Statements to: Add, Delete and Modify Columns in an Existing Table; Add and Delete Constraints on Columns.

    Refer to Images 8a & 8b, as mentioned in the code.

    Sub automateAccessADO_8()
    ‘Using ADO with SQL Statements to: Add, Delete and Modify Columns in an Existing Table; Add and Delete Constraints on Columns.

    ‘To use ADO in your VBA project, you must add a reference to the ADO Object Library in Excel (your host application) by clicking Tools-References in VBE, and then choose an appropriate version of Microsoft ActiveX Data Objects x.x Library from the list.

    ‘—————
    ‘DIM STATEMENTS

    Dim strMyPath As String, strDBName As String, strDB As String
    Dim strSQL As String

    ‘instantiate an ADO object using Dim with the New keyword:
    Dim adoRecSet As New ADODB.Recordset
    Dim connDB As New ADODB.Connection

    ‘—————
    ‘THE CONNECTION OBJECT

    strDBName = «SalesReport.accdb»
    strMyPath = ThisWorkbook.Path
    strDB = strMyPath & «» & strDBName

    ‘Connect to a data source:
    ‘For pre — MS Access 2007, .mdb files (viz. MS Access 97 up to MS Access 2003), use the Jet provider: «Microsoft.Jet.OLEDB.4.0». For Access 2007 (.accdb database) use the ACE Provider: «Microsoft.ACE.OLEDB.12.0». The ACE Provider can be used for both the Access .mdb & .accdb files.
    connDB.Open ConnectionString:=«Provider = Microsoft.ACE.OLEDB.12.0; data source=» & strDB

    ‘—————
    ‘ADD, DELETE OR MODIFY COLUMNS IN AN EXISTING TABLE USING THE SQL ‘ALTER TABLE’ STATEMENT.
    ‘Refer Image 8a to view the SalesManager Table in MS Access file «SalesReport.accdb» before running below code

    ‘Run the ADO connection Execute method, to ALTER TABLE, without opening the recordset. SQL command ADD COLUMN adds a new column at the end of the existing columns — in below code we are adding 3 columns named Telephone, City & ZipCode.
    strSQL = «ALTER TABLE SalesManager ADD COLUMN Telephone char(15), COLUMN City Text(30), COLUMN ZipCode char(6)»
    connDB.Execute CommandText:=strSQL

    ‘modify/enter column values after opening recordset — refer Image 8b which shows table after entering values as below:
    strSQL = «SELECT * FROM SalesManager WHERE EmployeeId = 12″
    adoRecSet.Open Source:=strSQL, ActiveConnection:=connDB, CursorType:=adOpenDynamic, LockType:=adLockOptimistic

    With adoRecSet

    .Fields(«Telephone») = «421-1234567»
    .Fields(«City») = «New York»
    .Fields(«ZipCode») = «10453»

    .Update

    End With

    adoRecSet.Close

    ‘Run the ADO connection Execute method, to ALTER TABLE, without opening the recordset.

    ‘delete the Telephone column in the SalesManager Table:
    strSQL = «ALTER TABLE SalesManager DROP COLUMN Telephone»
    connDB.Execute CommandText:=strSQL

    ‘change the data type of the ZipCode column in the SalesManager Table:
    strSQL = «ALTER TABLE SalesManager ALTER COLUMN ZipCode Long»
    connDB.Execute CommandText:=strSQL

    ‘delete the City & ZipCode columns in the SalesManager Table:
    strSQL = «ALTER TABLE SalesManager DROP COLUMN City, ZipCode»
    connDB.Execute CommandText:=strSQL

    ‘————-
    ‘ADD AND DELETE CONSTRAINTS ON COLUMNS

    ‘add a PRIMARY KEY CONSTRAINT named ‘pk_EI’ for the column ‘EmployeeID’ of the ‘SalesManager’ table:
    strSQL = «ALTER TABLE SalesManager ADD CONSTRAINT pk_EI PRIMARY KEY (EmployeeID)»
    connDB.Execute CommandText:=strSQL

    ‘drop the existing PRIMARY KEY CONSTRAINT named ‘pk_EI’ from the ‘SalesManager’ table:
    strSQL = «ALTER TABLE SalesManager DROP CONSTRAINT pk_EI»
    connDB.Execute CommandText:=strSQL

    ‘add a UNIQUE CONSTRAINT named ‘un_FN’ for the column ‘FirstName’ of the ‘SalesManager’ table:
    strSQL = «ALTER TABLE SalesManager ADD CONSTRAINT un_FN UNIQUE (FirstName)»
    connDB.Execute CommandText:=strSQL

    ‘drop the existing CONSTRAINT named ‘un_FN’ from the ‘SalesManager’ table:
    strSQL = «ALTER TABLE SalesManager DROP CONSTRAINT un_FN»
    connDB.Execute CommandText:=strSQL

    ‘—————
    ‘close the objects
    connDB.Close

    ‘destroy the variables
    Set adoRecSet = Nothing
    Set connDB = Nothing

    End Sub

     

    Ram-zes

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

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

    Есть таблица Excel, данные которой загружаются в запрос на выборку Access
    В запросе можно указать разные способы загрузки данных:
    1. Загружаются данные всего листа:  SELECT [Лист1$].* FROM [Лист1$] IN » [Excel 12.0;HDR=Yes;IMEX=1;DATABASE=С:База данныхФайл.xlsx];
    2. Загружаются данные заданных полей:  SELECT [Лист1$].[Поле1], [Лист1$].[Поле2],[Лист1$].[Поле3]  FROM [Excel 12.0;HDR=YES;IMEX=1;DATABASE= С:База данныхФайл.xlsx].[Лист1$]

    Нужен третий вариант: загрузка данных именованного диапазона или заданного диапазона, например A3:K20. Подскажите, можно ли загружать напрямую из Excel в ЗАПРОС Access данные диапазона? Если да, то как?
    Знаю как загружать именованный диапазон в Access с помощью сводных таблиц, но нужна загрузка в запрос

    Изменено: Ram-zes12.01.2015 17:58:10

     

    B.Key

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

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

    попробуйте просто указать имя именованного диапазона …….С:База данныхФайл.xlsx].[tbl]
    где tbl имя диапазона

     

    Ram-zes

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

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

    B.Key, так не получается…
    Сборка по теме с учетом моих экспериментов:
    1. Данные всего листа
    SELECT [Лист1$].* FROM [Лист1$] IN » [Excel 12.0XML;HDR=Yes;IMEX=1;DATABASE=С:База данныхФайл.xlsx];

    2. Данные заданных полей (поля должны стоять в первой строке)
    SELECT [Лист1$].[Поле1], [Лист1$].[Поле2],[Лист1$].[Поле3] FROM [Excel 12.0XML;HDR=YES;IMEX=1;DATABASE= С:База данныхФайл.xlsx].[Лист1$]

    3. Данные по заданному диапазону
    SELECT * FROM [Лист1$A6:A11] IN » [Excel 12.0XML;HDR=Yes;IMEX=1;DATABASE=С:База данныхФайл.xlsx];

    4. Данные по именованному диапазону
    SELECT * FROM [имя диапазона] IN » [Excel 12.0XML;HDR=Yes;IMEX=1;DATABASE=С:База данныхФайл.xlsx];

    Изменено: Ram-zes15.01.2015 16:34:17

     

    LVL

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

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

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

     

    Ram-zes

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

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

    Да, использовать значения…

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

     

    LVL

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

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

    #6

    15.01.2015 14:19:58

    Цитата
    Ram-zes пишет: обмен данными идет постоянно — это не разовая акция

    В чем проблема, не удаляйте связанную таблицу

    Цитата
    Ram-zes пишет: мои эксперименты показали, что если сразу обращаться к данным в файлеExcel из запроса с помощью SQL, то скорость обмена данными выше

    Доля правды в этом есть, вернее даже не так… Варианта 2:
    1. Работаете с таблицами посредством SQL (в данном случае прилинковывая таблицу)
    2. Формируете запрос с ограничениями сразу в нем (WHERE и т.д.)

    Лично я предпочту первый вариант, он более прозрачен и его проще поддерживать, что касается производительности, то да, в теории второй вариант быстрее, но это только в теории, на практике время выполнения запроса врятле будет отличаться значительно. На самом деле вопрос несколько в ином, насколько сложно сформировать запрос сразу со всеми ограничениями? + Нужно ли будет его корректировать и как часто… Поэтому, как я уже сказал, я предпочту первый вариант.

     

    LVL

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

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

    Перечитал ещё раз тему… Хочу уточнить — где находятся данные и куда их нужно вернуть? Я предполагал, что данные находятся в базе Access и вы хотите получать их с помощью запроса в файл Excel, при этом в тексте запроса использовать ограничения указанные в файле Excel… Я правильно вас понял?

     

    Antubas

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

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

    #8

    15.01.2015 14:28:51

    Цитата
    Ram-zes пишет: Если Вы линкуете, то перегружаете базу дополнительными таблицами

    DAO.Recordset не спасет? Если в него записать SQL запрос условием отбора, после обнулить и закрыть.

     

    Ram-zes

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

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

    Вообще коммуникация очень сложная… Но если коротко то примерно так:
    Есть файл Excel, куда вносится первичная информация (одно из полей Отдел). Информация поступает в Access и там идет нарезка этой информации на отделы, т.е. в Access есть запросы, которые и делают эту нарезку, скажем на 10 отделов (ну понятно, что в каждом запросе стоит свое условие — название отдела). C этих запросов информация отправляется в другие файлы Excel — по отделам. Там вносится необходимая информация. Затем в Access работают другие запросы, которые уже обращаются к этим файлам Excel и получают информацию в базу, есть консолидирующий запрос, который после, отправляет все данные в исходный файл.
    При сохранении файлов Excel информация попадает в Access. При обновлении данных в Excel информация закачивается из Access. Ну вот как-то так.

    Изменено: Ram-zes15.01.2015 14:36:16

     

    LVL

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

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

    Задумчивая схема…
    Т.е. всетаки обмен идет между Access и Excel — это я и хотел уточнить…
    А теперь — в каком именно моменте возникает проблема?

     

    Ram-zes

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

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

    Antubas, может DAO.Recordset и спасет… Но мне об этом не ведомо. Я не профессиональный IT и к сожалению об DAO.Recordset пока ничего не знаю. Можете показать пример кода, я попробую

     

    Ram-zes

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

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

    LVL, ну сейчас с запросами и получением (обменом) информации между файлами проблем нет. Есть другая проблема:

    Почему при обновлении данных в файле Excel открывается другой файл, связанный с ним через запрос Access?

    Есть файл данные_1.xlsx. Он связан с файлом данные_2.xlsx через запрос Access. Все файлы находятся в локальной сети. Подключение к базе данных Access в Excel идет по ссылке на сетевой диск Data Source=P:База…
    При обновлении файла данные_1.xlsx на компьютере_1 происходит запуск на этом же компьютере файла данные_2.xlsx (в режиме для чтения), если он одновременно открыт на компьютере_2.
    Если файл данные_2.xlsx закрыт, то обновление в файле данные_1.xlsx происходит без открытия связанного файла
    Из-за чего так происходит и что сделать, что бы при обновлении файла данные_1.xlsx не запускался файл данные_2.xlsx

    Можно ли решить эту проблему через настройку свойств подключения в Excel? В частности в настройке прав доступа:
    Права доступа (Read — только чтение; ReadWrite — чтение и запись; Share Deny None — никому не отказывать ни в чтении, ни в записи; Share Deny Read — запретить всем работу в режиме чтения; Share Deny Write — запретить всем работу в режиме записи; Share Exclusive — запретить всем работу в режиме чтения/записи; Write — только запись).

    Изменено: Ram-zes15.01.2015 14:43:28

     

    Ram-zes

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

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

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

     

    Antubas

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

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

    #14

    15.01.2015 14:51:53

    Цитата
    Ram-zes пишет: пример кода
    Код
    Function status()
       Dim db As Database
       Dim rst As DAO.Recordset
       Dim strSQL As String
       Set db = CurrentDb
       strSQL = "SELECT [Лист1$].* FROM [Лист1$] IN '' [Excel 12.0;HDR=Yes;IMEX=1;DATABASE=С:База данныхФайл.xlsx];"
       Set rst = db.OpenRecordset(strSQL)
       rst.MoveFirst
       While Not rst.EOF
          rst.Fields("Столбец").Value
          rst.MoveNext
       Wend
       Set rst = Nothing
       rst.Close
    End Function
    

    Примерно так

     

    Ram-zes

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

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

    Да, совсем забыл, есть еще одно огромное преимущество у SQL запросов перед связанными таблицами. Вы знаете, что Access не берет более 255 столбцов…
    В моем случае в файлах ведется учет рабочего времени и там создана шкала времени на весь год, т.е. более 360 столбцов. Если вы делаете связанную таблицу, то она возьмет в Access только первы 255 столбцов. Даже если вы создадите именованный диапазон на столбцы после 255 и попытаетесь создать связанную таблицу в Access на этот диапазон, то он ее не подцепит. А вот SQL запрос берет с этого листа любые диапазоны. В начале мне приходилось дублировать вторую половину года на отдельный лист и с него делать связанную таблицу, сейчас же все на одном листе

     

    Ram-zes

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

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

    Antubas, а вставляем этот код в SQL запрос? Я правильно понимаю, что вместо моего кода нужно вставить ваш?

     

    Antubas

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

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

    Может выложите примерчик с Excel и Access файлом, или сходите на

    http://www.cyberforum.ru/ms-access/

    там помогут с Access.

     

    Antubas

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

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

    #18

    15.01.2015 15:03:51

    Цитата
    Ram-zes пишет: вставляем этот код в SQL запрос?

    В VBA, лучше всего дайте файлы с примерами )

     

    LVL

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

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

    #19

    15.01.2015 15:04:20

    Цитата
    Ram-zes пишет: Access не берет более 255 столбцов…

    Вы создаете таблицы в Access с таким количеством полей?

     

    Ram-zes

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

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

    LVL, а куда деваться? Если нужно такое количество полей: 01.01 | 02.01 | 03.01 и т.д.

    Antubas, с VBA не работаю, к сожалению…

    Изменено: Ram-zes15.01.2015 15:08:07

     

    Antubas

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

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

    У Вас база Access типа «Клиент»-«Сервер», или же Вы Access используете просто для операции БД?

    Изменено: Antubas15.01.2015 15:08:14

     

    Ram-zes

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

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

    видимо просто для операции БД

     

    Ram-zes

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

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

    В принципе, выложить можно, но мне нужно ее подготовить для этого, только завтра

     

    Antubas

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

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

    #24

    15.01.2015 15:11:44

    Цитата
    Ram-zes пишет: операции БД

    А почему бы тогда Вам не тратить время на Access и сделать все эти деления и обновления в самом Excel?

    Цитата
    только завтра

    no problem

    Изменено: Antubas15.01.2015 15:21:55

     

    Ram-zes

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

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

    Вопрос в совместном доступе в Excel — не просто это сделать (ну мне не просто). Потребуется VBA. Ну или я не знаю адекватного способа

    Изменено: Ram-zes15.01.2015 15:21:11

     

    Ram-zes

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

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

    В общем решение оказалось простым. Нужен офис 2010 на всех компах и в свойствах подключения в правах доступа нужно указать: Share Deny None

     

    zin-renat

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

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

    #27

    24.07.2015 11:37:14

    Добрый день. Ситуация такая. Имеется запрос из внешней базы данных MS SQL Server 2012, результат которого выводится в книгу Excel.

    Код
    select * from packs where packs.prday = 10
    

    Как вместо цифры 10 подставить значение из ячейки листа Excel без использования VBA?

     

    JeyCi

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

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

    #28

    24.07.2015 12:05:22

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

    Код
    select * from packs where packs.prday = [?]
    

    или заново сформируйте параметрический (!) запрос через ms query…

    см пост№23 здесь

    p.s. и все запросы сваливать в эту ветку, наверно, не надо — лучше см.

    Правила форума

    — чуть что, я вас предупредила…

    Изменено: JeyCi24.07.2015 12:10:08

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

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

    Выйти из подобной ситуации поможет Excel.

    Уверен, что ни для кого не секрет, что MS Excel имеет встроенный модуль VBA и надстройки, позволяющие подключаться к внешним источникам данных, то есть по сути является мощным инструментом для аналитики, а значит идеально подходит для решения подобных задач.

    Для того чтобы обойти проблему, нам потребуется таблица с целевой выборкой, в которой содержатся идентификаторы, по которым можно достаточно корректно получить недостающую информацию (это может быть уникальный идентификатор, назовем его ID, или набор из данных, находящихся в разных столбцах), ПК с установленным MS Excel, и доступом к БД с недостающей информацией и, конечно, желание получить ту самую информацию.

    Создаем в MS Excel книгу, на листе которой размещаем таблицу с идентификаторами, по которым будем в дальнейшем формировать запрос (если у нас есть уникальный идентификатор, для обеспечения максимальной скорости обработки таблицу лучше представить в виде одного столбца), сохраняем книгу в формате *.xlsm, после чего приступаем к созданию макроса.

    Через меню «Разработчик» открываем встроенный VBA редактор и начинаем творить.

    Sub job_sql() — Пусть наш макрос называется job_sql.

    Пропишем переменные для подключения к БД, записи данных и запроса:

    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim sql As String

    Опишем параметры подключения:

    sql = «Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=True;Data Source=Storoge.company.ru Storoge.»

    Объявим процедуру свойства, для присвоения значения:

    Set cn = New ADODB.Connection
    cn.Provider = » SQLOLEDB.1″
    cn.ConnectionString = sql
    cn.ConnectionTimeout = 0
    cn.Open

    Вот теперь можно приступать непосредственно к делу.

    Организуем цикл:

    For i = 2 To 1000

    Как вы уже поняли конечное значение i=1000 здесь только для примера, а в реальности конечное значение соответствует количеству строк в Вашей таблице. В целях унификации можно использовать автоматический способ подсчета количества строк, например, вот такую конструкцию:

    Dim LastRow As Long
    LastRow = ActiveSheet.UsedRange.Row — 1 + ActiveSheet.UsedRange.Rows.Count

    Тогда открытие цикла будет выглядеть так:

    For i = 2 To LastRow

    Как я уже говорил выше MS Excel является мощным инструментом для аналитики, и возможности Excel VBA не заканчиваются на простом переборе значений или комбинаций значений. При наличии известных Вам закономерностей можно ограничить объем выгружаемой из БД информации путем добавления в макрос простых условий, например:

    If Cells(i, 2) = «Ваше условие» Then

    Итак, мы определились с объемом и условиями выборки, организовали подключение к БД и готовы формировать запрос. Предположим, что нам нужно получить информацию о размере ежемесячного платежа [Ежемесячный платеж] из таблицы [payments].[refinans_credit], но только по тем случаям, когда размер ежемесячного платежа больше 0

    sql = «select [Ежемесячный платеж] from [PAYMENTS].[refinans_credit] » & _
    «where [Ежемесячный платеж]>0 and [Номер заявки] ='» & Cells(i, 1) & «‘ «

    Если значений для формирования запроса несколько, соответственно прописываем их в запросе:

    «where [Ежемесячный платеж]>0 and [Номер заявки] = ‘» & Cells(i, 1) & «‘ » & _
    » and [Дата платежа]='» & Cells(i, 2) & «‘»

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

    Cells(i, 3) = sql

    в третьем столбце записываются запросы.

    Выполняем SQL запрос:

    Set rs = cn.Execute(sql)

    А чтобы хоть как-то наблюдать за выполнением макроса выведем изменение i в статус-бар

    Application.StatusBar = «Execute script …» & i
    Application.ScreenUpdating = False

    Теперь нам нужно записать полученные результаты. Для этого будем использовать оператор Do While:

    j = 0
    Do While Not rs.EOF
    For ii = 0 To rs.Fields.Count — 1
    Cells(i, 4 + j + ii) = rs.Fields(0 + ii) ‘& «;»

    Указываем ячейки для вставки полученных данных (4 в примере это номер столбца с которого начинаем запись результатов)

    Next ii
    j = j + rs.Fields.Count
    s.MoveNext
    Loop
    rs.Close
    End If

    — закрываем цикл If, если вводили дополнительные условия

    Next i
    cn.Close
    Application.StatusBar = «Готово»
    End Sub

    — закрываем макрос.

    В дополнение хочу отметить, что данный макрос позволяет обращаться как к БД на MS SQL так и к БД Oracle, разница будет только в параметрах подключения и собственно в синтаксисе SQL запроса.

    В приведенном примере для авторизации при подключении к БД используется доменная аутентификация.

    А как быть если для аутентификации необходимо ввести логин и пароль? Ничего невозможного нет. Изменим часть макроса, которая отвечает за подключение к БД следующим образом:

    sql = «Provider= SQLOLEDB.1;Password=********;User ID=********;Data Source= Storoge.company.ru Storoge;APP=SFM»

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

    sql = «Provider= SQLOLEDB.1;Password=» & Sheets(«Лист аутентификации»).TextBox1.Value & «;User ID=» & Sheets(«Лист аутентификации «).TextBox2.Value & «;Data Source= Storoge.company.ru Storoge;APP=SFM»

    Место для расположения текстовых полей не принципиально, можно расположить их на листе с таблицей в первых строках, но мне удобней размещать поля на отдельном листе. Чтобы введенные учетные данные не сохранялись вместе с результатом выполнения макроса в конце исполняемого кода дописываем:

    Sheets(«Выгрузка»).TextBox1.Value = «« Sheets(»Выгрузка«).TextBox2.Value = »»

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

    Вот такое вполне жизнеспособное решение, позволяющее сократить трудозатраты при получении и обработке данных, я использую. Надеюсь мой опыт применения SQL запросов в Excel будет полезен и вам в решении текущих задач.

    Понравилась статья? Поделить с друзьями:
  • Excel academy sf education отзывы
  • Excel absolute all cells
  • Excel 8 in 1 для кошек мультивитамины
  • Excel 8 in 1 puppies multivitamins
  • Excel about version 2010