There are many fine ways to get this done, which others have already suggestioned. Following along the «get Excel data via SQL track», here are some pointers.
-
Excel has the «Data Connection Wizard» which allows you to import or link from another data source or even within the very same Excel file.
-
As part of Microsoft Office (and OS’s) are two providers of interest: the old «Microsoft.Jet.OLEDB», and the latest «Microsoft.ACE.OLEDB». Look for them when setting up a connection (such as with the Data Connection Wizard).
-
Once connected to an Excel workbook, a worksheet or range is the equivalent of a table or view. The table name of a worksheet is the name of the worksheet with a dollar sign («$») appended to it, and surrounded with square brackets («[» and «]»); of a range, it is simply the name of the range. To specify an unnamed range of cells as your recordsource, append standard Excel row/column notation to the end of the sheet name in the square brackets.
-
The native SQL will (more or less be) the SQL of Microsoft Access. (In the past, it was called JET SQL; however Access SQL has evolved, and I believe JET is deprecated old tech.)
-
Example, reading a worksheet:
SELECT * FROM [Sheet1$]
-
Example, reading a range:
SELECT * FROM MyRange
-
Example, reading an unnamed range of cells:
SELECT * FROM [Sheet1$A1:B10]
-
There are many many many books and web sites available to help you work through the particulars.
Further notes
By default, it is assumed that the first row of your Excel data source contains column headings that can be used as field names. If this is not the case, you must turn this setting off, or your first row of data «disappears» to be used as field names. This is done by adding the optional HDR= setting
to the Extended Properties of the connection string. The default, which does not need to be specified, is HDR=Yes
. If you do not have column headings, you need to specify HDR=No
; the provider names your fields F1, F2, etc.
A caution about specifying worksheets: The provider assumes that your table of data begins with the upper-most, left-most, non-blank cell on the specified worksheet. In other words, your table of data can begin in Row 3, Column C without a problem. However, you cannot, for example, type a worksheet title above and to the left of the data in cell A1.
A caution about specifying ranges: When you specify a worksheet as your recordsource, the provider adds new records below existing records in the worksheet as space allows. When you specify a range (named or unnamed), Jet also adds new records below the existing records in the range as space allows. However, if you requery on the original range, the resulting recordset does not include the newly added records outside the range.
Data types (worth trying) for CREATE TABLE: Short, Long, Single, Double, Currency, DateTime, Bit, Byte, GUID, BigBinary, LongBinary, VarBinary, LongText, VarChar, Decimal
.
Connecting to «old tech» Excel (files with the xls extention): Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:MyFolderMyWorkbook.xls;Extended Properties=Excel 8.0;
. Use the Excel 5.0 source database type for Microsoft Excel 5.0 and 7.0 (95) workbooks and use the Excel 8.0 source database type for Microsoft Excel 8.0 (97), 9.0 (2000) and 10.0 (2002) workbooks.
Connecting to «latest» Excel (files with the xlsx file extension): Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Excel2007file.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES;"
Treating data as text: IMEX setting treats all data as text. Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Excel2007file.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES;IMEX=1";
(More details at http://www.connectionstrings.com/excel)
More information at http://msdn.microsoft.com/en-US/library/ms141683(v=sql.90).aspx, and at http://support.microsoft.com/kb/316934
Connecting to Excel via ADODB via VBA detailed at http://support.microsoft.com/kb/257819
Microsoft JET 4 details at http://support.microsoft.com/kb/275561
Содержание
- Создание SQL запроса в Excel
- Способ 1: использование надстройки
- Способ 2: использование встроенных инструментов Excel
- Способ 3: подключение к серверу SQL Server
- Вопросы и ответы
SQL – популярный язык программирования, который применяется при работе с базами данных (БД). Хотя для операций с базами данных в пакете Microsoft Office имеется отдельное приложение — Access, но программа Excel тоже может работать с БД, делая SQL запросы. Давайте узнаем, как различными способами можно сформировать подобный запрос.
Читайте также: Как создать базу данных в Экселе
Язык запросов SQL отличается от аналогов тем, что с ним работают практически все современные системы управления БД. Поэтому вовсе не удивительно, что такой продвинутый табличный процессор, как Эксель, обладающий многими дополнительными функциями, тоже умеет работать с этим языком. Пользователи, владеющие языком SQL, используя Excel, могут упорядочить множество различных разрозненных табличных данных.
Способ 1: использование надстройки
Но для начала давайте рассмотрим вариант, когда из Экселя можно создать SQL запрос не с помощью стандартного инструментария, а воспользовавшись сторонней надстройкой. Одной из лучших надстроек, выполняющих эту задачу, является комплекс инструментов XLTools, который кроме указанной возможности, предоставляет массу других функций. Правда, нужно заметить, что бесплатный период пользования инструментом составляет всего 14 дней, а потом придется покупать лицензию.
Скачать надстройку XLTools
- После того, как вы скачали файл надстройки xltools.exe, следует приступить к его установке. Для запуска инсталлятора нужно произвести двойной щелчок левой кнопки мыши по установочному файлу. После этого запустится окно, в котором нужно будет подтвердить согласие с лицензионным соглашением на использование продукции компании Microsoft — NET Framework 4. Для этого всего лишь нужно кликнуть по кнопке «Принимаю» внизу окошка.
- После этого установщик производит загрузку обязательных файлов и начинает процесс их установки.
- Далее откроется окно, в котором вы должны подтвердить свое согласие на установку этой надстройки. Для этого нужно щелкнуть по кнопке «Установить».
- Затем начинается процедура установки непосредственно самой надстройки.
- После её завершения откроется окно, в котором будет сообщаться, что инсталляция успешно выполнена. В указанном окне достаточно нажать на кнопку «Закрыть».
- Надстройка установлена и теперь можно запускать файл Excel, в котором нужно организовать SQL запрос. Вместе с листом Эксель открывается окно для ввода кода лицензии XLTools. Если у вас имеется код, то нужно ввести его в соответствующее поле и нажать на кнопку «OK». Если вы желаете использовать бесплатную версию на 14 дней, то следует просто нажать на кнопку «Пробная лицензия».
- При выборе пробной лицензии открывается ещё одно небольшое окошко, где нужно указать своё имя и фамилию (можно псевдоним) и электронную почту. После этого жмите на кнопку «Начать пробный период».
- Далее мы возвращаемся к окну лицензии. Как видим, введенные вами значения уже отображаются. Теперь нужно просто нажать на кнопку «OK».
- После того, как вы проделаете вышеуказанные манипуляции, в вашем экземпляре Эксель появится новая вкладка – «XLTools». Но не спешим переходить в неё. Прежде, чем создавать запрос, нужно преобразовать табличный массив, с которым мы будем работать, в так называемую, «умную» таблицу и присвоить ей имя.
Для этого выделяем указанный массив или любой его элемент. Находясь во вкладке «Главная» щелкаем по значку «Форматировать как таблицу». Он размещен на ленте в блоке инструментов «Стили». После этого открывается список выбора различных стилей. Выбираем тот стиль, который вы считаете нужным. На функциональность таблицы указанный выбор никак не повлияет, так что основывайте свой выбор исключительно на основе предпочтений визуального отображения. - Вслед за этим запускается небольшое окошко. В нем указываются координаты таблицы. Как правило, программа сама «подхватывает» полный адрес массива, даже если вы выделили только одну ячейку в нем. Но на всякий случай не мешает проверить ту информацию, которая находится в поле «Укажите расположение данных таблицы». Также нужно обратить внимание, чтобы около пункта «Таблица с заголовками», стояла галочка, если заголовки в вашем массиве действительно присутствуют. Затем жмите на кнопку «OK».
- После этого весь указанный диапазон будет отформатирован, как таблица, что повлияет как на его свойства (например, растягивание), так и на визуальное отображение. Указанной таблице будет присвоено имя. Чтобы его узнать и по желанию изменить, клацаем по любому элементу массива. На ленте появляется дополнительная группа вкладок – «Работа с таблицами». Перемещаемся во вкладку «Конструктор», размещенную в ней. На ленте в блоке инструментов «Свойства» в поле «Имя таблицы» будет указано наименование массива, которое ему присвоила программа автоматически.
- При желании это наименование пользователь может изменить на более информативное, просто вписав в поле с клавиатуры желаемый вариант и нажав на клавишу Enter.
- После этого таблица готова и можно переходить непосредственно к организации запроса. Перемещаемся во вкладку «XLTools».
- После перехода на ленте в блоке инструментов «SQL запросы» щелкаем по значку «Выполнить SQL».
- Запускается окно выполнения SQL запроса. В левой его области следует указать лист документа и таблицу на древе данных, к которой будет формироваться запрос.
В правой области окна, которая занимает его большую часть, располагается сам редактор SQL запросов. В нем нужно писать программный код. Наименования столбцов выбранной таблицы там уже будут отображаться автоматически. Выбор столбцов для обработки производится с помощью команды SELECT. Нужно оставить в перечне только те колонки, которые вы желаете, чтобы указанная команда обрабатывала.
Далее пишется текст команды, которую вы хотите применить к выбранным объектам. Команды составляются при помощи специальных операторов. Вот основные операторы SQL:
- ORDER BY – сортировка значений;
- JOIN – объединение таблиц;
- GROUP BY – группировка значений;
- SUM – суммирование значений;
- DISTINCT – удаление дубликатов.
Кроме того, в построении запроса можно использовать операторы MAX, MIN, AVG, COUNT, LEFT и др.
В нижней части окна следует указать, куда именно будет выводиться результат обработки. Это может быть новый лист книги (по умолчанию) или определенный диапазон на текущем листе. В последнем случае нужно переставить переключатель в соответствующую позицию и указать координаты этого диапазона.
После того, как запрос составлен и соответствующие настройки произведены, жмем на кнопку «Выполнить» в нижней части окна. После этого введенная операция будет произведена.
Урок: «Умные» таблицы в Экселе
Способ 2: использование встроенных инструментов Excel
Существует также способ создать SQL запрос к выбранному источнику данных с помощью встроенных инструментов Эксель.
- Запускаем программу Excel. После этого перемещаемся во вкладку «Данные».
- В блоке инструментов «Получение внешних данных», который расположен на ленте, жмем на значок «Из других источников». Открывается список дальнейших вариантов действий. Выбираем в нем пункт «Из мастера подключения данных».
- Запускается Мастер подключения данных. В перечне типов источников данных выбираем «ODBC DSN». После этого щелкаем по кнопке «Далее».
- Открывается окно Мастера подключения данных, в котором нужно выбрать тип источника. Выбираем наименование «MS Access Database». Затем щелкаем по кнопке «Далее».
- Открывается небольшое окошко навигации, в котором следует перейти в директорию расположения базы данных в формате mdb или accdb и выбрать нужный файл БД. Навигация между логическими дисками при этом производится в специальном поле «Диски». Между каталогами производится переход в центральной области окна под названием «Каталоги». В левой области окна отображаются файлы, расположенные в текущем каталоге, если они имеют расширение mdb или accdb. Именно в этой области нужно выбрать наименование файла, после чего кликнуть на кнопку «OK».
- Вслед за этим запускается окно выбора таблицы в указанной базе данных. В центральной области следует выбрать наименование нужной таблицы (если их несколько), а потом нажать на кнопку «Далее».
- После этого открывается окно сохранения файла подключения данных. Тут указаны основные сведения о подключении, которое мы настроили. В данном окне достаточно нажать на кнопку «Готово».
- На листе Excel запускается окошко импорта данных. В нем можно указать, в каком именно виде вы хотите, чтобы данные были представлены:
- Таблица;
- Отчёт сводной таблицы;
- Сводная диаграмма.
Выбираем нужный вариант. Чуть ниже требуется указать, куда именно следует поместить данные: на новый лист или на текущем листе. В последнем случае предоставляется также возможность выбора координат размещения. По умолчанию данные размещаются на текущем листе. Левый верхний угол импортируемого объекта размещается в ячейке A1.
После того, как все настройки импорта указаны, жмем на кнопку «OK».
- Как видим, таблица из базы данных перемещена на лист. Затем перемещаемся во вкладку «Данные» и щелкаем по кнопке «Подключения», которая размещена на ленте в блоке инструментов с одноименным названием.
- После этого запускается окно подключения к книге. В нем мы видим наименование ранее подключенной нами базы данных. Если подключенных БД несколько, то выбираем нужную и выделяем её. После этого щелкаем по кнопке «Свойства…» в правой части окна.
- Запускается окно свойств подключения. Перемещаемся в нем во вкладку «Определение». В поле «Текст команды», находящееся внизу текущего окна, записываем SQL команду в соответствии с синтаксисом данного языка, о котором мы вкратце говорили при рассмотрении Способа 1. Затем жмем на кнопку «OK».
- После этого производится автоматический возврат к окну подключения к книге. Нам остается только кликнуть по кнопке «Обновить» в нем. Происходит обращение к базе данных с запросом, после чего БД возвращает результаты его обработки назад на лист Excel, в ранее перенесенную нами таблицу.
Способ 3: подключение к серверу SQL Server
Кроме того, посредством инструментов Excel существует возможность соединения с сервером SQL Server и посыла к нему запросов. Построение запроса не отличается от предыдущего варианта, но прежде всего, нужно установить само подключение. Посмотрим, как это сделать.
- Запускаем программу Excel и переходим во вкладку «Данные». После этого щелкаем по кнопке «Из других источников», которая размещается на ленте в блоке инструментов «Получение внешних данных». На этот раз из раскрывшегося списка выбираем вариант «С сервера SQL Server».
- Происходит открытие окна подключения к серверу баз данных. В поле «Имя сервера» указываем наименование того сервера, к которому выполняем подключение. В группе параметров «Учетные сведения» нужно определиться, как именно будет происходить подключение: с использованием проверки подлинности Windows или путем введения имени пользователя и пароля. Выставляем переключатель согласно принятому решению. Если вы выбрали второй вариант, то кроме того в соответствующие поля придется ввести имя пользователя и пароль. После того, как все настройки проведены, жмем на кнопку «Далее». После выполнения этого действия происходит подключение к указанному серверу. Дальнейшие действия по организации запроса к базе данных аналогичны тем, которые мы описывали в предыдущем способе.
Как видим, в Экселе SQL запрос можно организовать, как встроенными инструментами программы, так и при помощи сторонних надстроек. Каждый пользователь может выбрать тот вариант, который удобнее для него и является более подходящим для решения конкретно поставленной задачи. Хотя, возможности надстройки XLTools, в целом, все-таки несколько более продвинутые, чем у встроенных инструментов Excel. Главный же недостаток XLTools заключается в том, что срок бесплатного пользования надстройкой ограничен всего двумя календарными неделями.
Еще статьи по данной теме:
Помогла ли Вам статья?
Представьте себе ситуацию, Вы получили целевую выборку из одной базы данных, но для полноты картины, как всегда, нужны дополнительные данные. Проблема может быть в том, что нужная информация хранится в другой базе данных и возможности создать на ней свою таблицу нет, подключиться используя 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 будет полезен и вам в решении текущих задач.
Export SQL Data to Excel from Microsoft SQL Server
Let’s go over three ways to export an SQL Query to an Excel File Using MSSQL
Despite the pushback from Database aficionados, sometimes it makes sense to export data from SQL to an Excel file. It really depends on who is the audience of the information. Not everyone is great with SQL Analysis. Few people require access to the database.
And lots of times the boss just needs to see the information in Excel.
So, if Excel is the Output required this article is here to help you Export SQL Queries to Excel.
Here are three ways to Export a SQL query to Excel format. The last one can be kind of tricky. I’ll provide a condensed version followed by a detailed version with screenshots.
Three quick ways to Export SQL Data to Excel:
Choose the Summarized Version and then scroll to further down to use the SQL Export Version to Excel that works best for you.
Method Number 1 – Copy Grid results and Paste into Excel
Under Query, Make sure results to Grid are selected.
After Running your query, right-click the top right corner of the grid.
Copy With Headers.
Paste into an Excel File
Possible Issues:
I’ve seen formatting issues with this strategy. For Example, there are situations where the spreadsheet drops preceding zeroes after the copy-paste.
I’ve also noticed lengthy fields, (think of a really long free text field) end up running into the next line.
For the reasons above, I prefer this next method for a clean Excel file.
Method Number 2: Export the Query Results as a Task
In the object explorer window, find the database you want to export from.
Right Click the Database, Click Tasks, and Export Data
The Wizard walks you through the rest of the steps but I have included screenshots below.
Method Number 3 – Use Good Old fashioned TSQL to send the data to an excel file
For those who value speed above all use the following script format.
INSERT INTO OPENROWSET(‘Microsoft.ACE.OLEDB.12.0′,’Excel 12.0; Database=C:SQL2019ReportsUsernames.xlsx;’,’SELECT * FROM [Sheet1$]’) SELECT DisplayName FROM dbo.Users Where Reputation > 2000
Possible Issues – Configuring this might not be your type of fun and getting this straight deserves its own article.
Step by Step instructions with screenshots
Method Number 1 – Copy Grid results and paste into Excel
After ensuring results to grid turned on, Execute your query, right-click the top left-hand corner of the results grid.
Choose Copy with Headers and then you are ready to paste in Excel with Ctrl + C
Method 2 – Export Via the Export Wizard
Right-click on the database you want to export from. Then Select tasks and “Export Data”.
The SQL Server Wizard will startup. Click Next through the prompts.
Select the appropriate Native client, your server name, and database and choose “Next”.
Next, Select Microsoft Excel and the file path where you want to import the data. The .xls file that you name will be created by this process.
Now you can choose to export a whole table or a query. For the purpose of this exercise, we are creating a query.
Paste the query into the SQL Statement field. Make sure every output field has a unique name.
Click Next on the “Select Source Tables and Views” screen.
I use the default settings on the “conversion issues and data type mapping screen”
Now you can choose to Run immediately or Save an SSIS Package for later reuse.
Double Check your settings and click finish.
Make sure there were no errors in the Export.
Now Go to the directory you choose earlier and make sure you have a sweet-looking Excel File at that location!
Method Number 3 – Use TSQL to send the data to an excel file
This method is the quickest once you get it set up but the configuration is the tricky part. Permissions can be a limiting factor.
Also with the script below, you have to make sure the file exists before you run the query for it to import properly.
First, create a blank excel file at the directory of your choosing.
C:SQL2019ReportsUsernames.xlsx
Then run this script below.
INSERT INTO OPENROWSET(‘Microsoft.ACE.OLEDB.12.0’,’Excel 12.0;
Database=C:SQL2019ReportsUsernames.xlsx;’,’SELECT * FROM [Sheet1$]’)
SELECT DisplayName FROM dbo.Users Where Reputation > 2000
Configuring this can be tricky and dependent on your level of permissions. Make sure you have the correct Linked Server/Provider installed (‘Microsoft.ACE.OLEDB.12.0’) And check your Database user settings to this server .
07 Aug 3 Ways to Perform an Excel SQL Query
Posted at 12:08h
in Excel VBA
0 Comments
Howdee! Excel is a great tool for performing data analysis. However, sometimes getting the data we need into Excel can be cumbersome and take a lot of time when going through other systems. You’re also at the mercy of how a disparate system exports data, and may need an additional step between exporting and getting the data into the format you need. If you have access to the database where the data is housed, you can circumvent these steps and create your own custom Excel SQL query.
To follow along with my below demos, you’ll need to have an instance of SQL server installed on your desktop. If you don’t, you can download the trial version, developer version, or free express version here. I’ll be working with the free developer version in this article. I’m also using a sample database that you can download here. The easiest way to install this is using SQL Server Management Studio (SSMS). That download is available here. Once you open SSMS, it should automatically detect your local server instance. You must ensure your SQL Server User is running as the “Local Client” and then you can create a blank database, and restore that database from the backup file. If you have issues accomplishing this, let me know in the comments and I’ll elaborate on how this is done.
If you are familiar enough with SQL and have access to your own data, you can skip these steps and use your data. Otherwise, I recommend downloading these tools before getting started. If you’re new to SQL, I highly recommend the SQL Essential Training courses on Lynda.com. Now, on to why you’re all here…
Excel SQL Query Using Get Data
This option is the most straight forward approach to creating an Excel SQL query. However, it is important to note that this approach is only available in Excel 2013 and later and will not currently work on Mac OSX. To get started, select “Get Data” à “From Database” à “From SQL Server Database” as shown in the screen grab. At this point it will pop-up a prompt to enter your server name and the target database you’re wanting to query (you can get this information from SSMS). You can enter this information and then select “OK”. This will allow you to browse available tables from that database to import. You can remove columns and filter tables before importing. If you do not know how to write SQL queries yet, this is one approach you can take.
However, if you select the “Advanced” dropdown arrow, you can create your own custom Excel SQL query. I usually create my query in SSMS or Visual Studio and then just paste the final query in this window. That is because there is no intellisense in this window and it can be difficult to spot errors in your query. Once you select OK, it will ask you to confirm credentials and you may get an error about encryption. This is common when connecting to databases in this manner and nothing to worry about. The next screen will provide an example of your data and you can select “Load” to import it.
This will create a table on a new tab and you’ll also notice a new pane on the right titled “Connections & Queries”. It will display the name of your query (defaults to “Query1”, “Query2”, etc.) and you can rename the query by right-clicking and selecting “Rename”. You can also edit the query from this location as well. It will open up an interface with a sample of your data and you can add/remove columns, filter your data, or edit your source query from here.
Now that you’ve set up this Excel SQL query, you can simply refresh the data set with fresh data anytime by clicking “Refresh All” on the “Data” ribbon. A quick side note here. If you pivot this data, “Refresh All” will refresh pivot tables first and then the query. To update your pivot table, you’ll need to refresh all twice or update your pivot table manually. To me, one of the downsides of this approach is the results are always returned in a table. I personally do not like working with tables in Excel. That’s where using VBA for your SQL query can come in handy.
Excel SQL Query Using VBA
Using VBA to create your Excel SQL query is not as straight forward as the previous approach, but can still be an extremely useful method depending on your situation. I particularly like that the data is not returned to a table unless you designate it to be so. This technique will work on older versions of Microsoft Excel but will not work on Mac OSX versions of Excel since it uses and ADO connection.
To get started, open up the VBA editor by pressing alt+F11. Before beginning to write your code, you’ll need to ensure that the “Microsoft ActiveX Data Objects 2.0 Library” is referenced from the VBA Project. To do this, click on “Tools” in the ribbon menu at the top of the VBA editor. In the popup, ensure the library is checked as shown below. This allows the project to use the ADO connectors to create the connection to your database. Next, let’s dimension a few variables.
Dim Conn As New ADODB.Connection
Dim recset As New ADODB.Recordset
Dim sqlQry As String, sConnect As String
The Conn variable is will be used to represent the connection between our VBA project and the SQL database. The receset variable will represent a new record set through which we will give the command to perform our Excel SQL query using the connection we’ve established. Finally, the sqlQry variable will represent a string variable that is our SQL query command, and the sConnect variable will be a string representing the connection string the database requires. Let’s look at how to use these variables to perform a SQL query.
sqlQry = "select top 1000 si.InvoiceID, si.InvoiceDate, sc.CustomerName from Sales.Invoices si" & _
" left join sales.Customers sc on sc.CustomerID = si.CustomerID"
sConnect = "Driver={SQL Server};Server=[Your Server Name Here]; Database=[Your Database Here];Trusted_Connection=yes;"
Conn.Open sConnect
Set recset = New ADODB.Recordset
recset.Open sqlQry, Conn
Sheet2.Cells(2, 1).CopyFromRecordset recset
recset.Close
Conn.Close
Set recset = Nothing
While this may look complex, each step is relatively simple. Firstly, we set our sqlQry variable equal to a string that represents the syntax of our SQL query. We then create a connection string we can use in our next command to connect to the database. So, “Conn.Open” is the command to open the connection and “sConnect” is the string it uses to do so. “Trusted_Connection=yes” means that the connection will attempt to be established using your Microsoft credentials for the account you’re logged in as.
Now that the connection is open, we can open a new record set and pass it the sql command using the sqlQry variable, and tell it which connection to use by passing it the Conn variable. We can then use the VBA command “CopyFromRecordset” to paste the recordset anywhere in our workbook. It’s important to close both the record set and connection at this point. You also want to set your recset variable equal to nothing so it does not eat up valuable resources.
One of the downsides to using this method is that you must explicitly tell Excel some things that the previous approach did automatically. For example, this SQL query will not return any column headers. Therefore, you must explicitly tell Excel what to label your columns. Secondly, the data is not automatically cleared and the new query imported. You must also explicitly tell Excel to do this as well. Here is the final code with those commands added.
Sub SQL_Example()
Dim Conn As New ADODB.Connection
Dim recset As New ADODB.Recordset
Dim sqlQry As String, sConnect As String
Sheet2.Cells.ClearContents
sqlQry = "select top 1000 si.InvoiceID, si.InvoiceDate, sc.CustomerName from Sales.Invoices si" & _
" left join sales.Customers sc on sc.CustomerID = si.CustomerID"
sConnect = "Driver={SQL Server};Server=[Your Server Name Here]; Database=[Your Database Name Here];Trusted_Connection=yes;"
Conn.Open sConnect
Set recset = New ADODB.Recordset
recset.Open sqlQry, Conn
Sheet2.Cells(2, 1).CopyFromRecordset recset
recset.Close
Conn.Close
Set recset = Nothing
Sheet2.Cells(1, 1) = "Invoice ID"
Sheet2.Cells(1, 2) = "Invoice Date"
Sheet2.Cells(1, 3) = "Customer Name"
End Sub
My preference for using this approach is when I want the user to be able to pass parameters to my Excel SQL query. For example, I might have a dropdown of customer names the user could select. By using this tactic, I can easily add a dropdown of customer names the user can select, and pass that value to my SQL query in a where clause.
As you can see, both the built in Excel SQL query and the VBA method have pros and cons. I employ both in my everyday work depending on what situation I find myself in.
Excel SQL Query Using Microsoft Query
This option is likely the most complex option, but it has the added advantage of being compatible with some versions of Mac OSX. I won’t pretend to be an expert at creating Mac OSX compatible tools for Excel, but I have successfully used this implementation to create an embedded Excel SQL query for Macs in the past.
I also like this method because you can create popup style parameters. For example, you can prompt the user to input date range parameters at the time the SQL query is ran. Like the first example, running this query is as easy as clicking “Refresh All” on the Data ribbon. Let’s dive in to the details.
To get started here, click “Get Data” on the Data ribbon. In the menu that dropdowns select “From Other Sources” and, finally “From Microsoft Query”.
This will open a wizard for you to choose your data source. Double click “<New Data Source>” and you’ll be prompted to enter some information about your data source. Option 1 can be anything you wish that describes your data source. Option 2 should be “SQL Server”. Click “Connect” and it will pop up a third window where you can enter information about the server and login information. Be sure you select the “Options>>” dropdown so you can select the database you’re wanting to connect to.
You’ll now have a new data source in the original window. Double click the data source to bring up a table import wizard. If you want to import an entire table, you can do so here and even filter and sort the data using the import wizard. However, if you want to use your own custom query as we have been, just select any field and go through the wizard and import the data. When you come to screen that asks you if you want to return the data to Excel or edit in a query, return the data to Excel. It will then prompt you to select where you want the data returned in your workbook.
The query will return the data in a table format. To change it to your own custom SQL query, let’s follow these steps:
- Click anywhere in the data table.
- On the Excel Data Ribbon, in the “Queries & Connections” group, properties will no longer be grayed out like it normally is. Click this.
- In the popup – you’ll see another properties icon. Click this.
- In this popup, select the “Definition” tab and paste your SQL query in the “Command Text” input box.
Now you’ve built an Excel SQL Query that can be refreshed anytime the workbook is refreshed. In my screengrab, the “Parameters” button is greyed out. If you want to add parameters to your query, you do so by adding “?” in your command text. That looks like this.
This creates a parameter the end user can interact with. You can have the user be prompted to enter an input when the workbook is refreshed, select a default value, or have it linked to a cell in the workbook. Even though this option is cumbersome to set up, I really enjoy using it. It allows me a lot of flexibility to have the user interact with the data. As I touched on in the beginning, I’ve had success using this option on Microsoft Office for Mac OSX. I don’t want to say this will work 100% of the time on a Mac because I’ve also had it fail. If anyone has any input on this, I’d love to hear from you.
Let me know your thoughts on these approaches in the comments! What other ways do you creatively get data into Excel from SQL data sources?
Cheers!
R
SQL запросы в Microsoft Excel
Смотрите также разграничения прав на все как там там уже имя, из которой вы вам полезна. Просим помощью доступ к подключения к данным безопасности.База данных Microsoft SQL, нажмите кнопку именно будет происходить перемещаемся во вкладку Выбираем наименование. Нужно оставить в таблицы. Как правило,
непосредственно самой надстройки.SQL – популярный язык
просмотр разными пользователями написано. Excel файл запроса или таблицы
Создание SQL запроса в Excel
хотите импортировать данные вас уделить пару источнику данных. и завершение работыНа вкладкеукажите SQL Server,Создать запрос подключение: с использованием«Данные»«MS Access Database» перечне только те программа сама «подхватывает»После её завершения откроется программирования, который применяется отчета. Например, сотрудники создается, но не — Далее /
Способ 1: использование надстройки
с помощью запросов секунд и сообщить,Примечание: Данные к которому нужнои выберите пункты проверки подлинности Windowsи щелкаем по. Затем щелкаем по колонки, которые вы полный адрес массива, окно, в котором при работе с каждого региона будут сохраняется и не Готово. на языке базы помогла ли она
- Параметры проверки подлинности используютсяПри необходимости в полев группе подключиться, в полеИз базы данных или путем введения кнопке кнопке желаете, чтобы указанная даже если вы будет сообщаться, что базами данных (БД). видеть только то, закрывается и такПосле у тебя данных. вам, с помощью только службы Excel,Имя файлаПолучить внешние данныеИмя сервера
- -> имени пользователя и«Подключения»«Далее»
- команда обрабатывала. выделили только одну инсталляция успешно выполнена. Хотя для операций что касается непосредственно остается висеть в выведет окно сРазверните поле кнопок внизу страницы.
- а не Excel.измените предложенное имя
- нажмите кнопку. При необходимости выИз базы данных SQL пароля. Выставляем переключатель, которая размещена на.Далее пишется текст команды, ячейку в нем. В указанном окне
- с базами данных их. Да и процессах и запрос выбором способа предоставленияИнструкцию SQL Для удобства такжеНажмите кнопку файла. Нажмите кнопкуИз других источников также можете указать Server согласно принятому решению. ленте в блокеОткрывается небольшое окошко навигации, которую вы хотите Но на всякий достаточно нажать на в пакете Microsoft в целом для не прекращает выполняться. данных: таблица илии вставьте или
- приводим ссылку наОКОбзори выберите пунктимя базы данных. Если вы выбрали инструментов с одноименным в котором следует применить к выбранным случай не мешает
- кнопку Office имеется отдельное отчетов это кудаИ вот на сводная таблица. введите запрос на оригинал (на английском.
- , чтобы изменить местоС сервера SQL Server.В диалоговом окне второй вариант, то названием. перейти в директорию объектам. Команды составляются проверить ту информацию,«Закрыть» приложение — Access, более удобный инструмент. это еще(http://www.maxprecision.com/download/sp_Excel.txt), ноДля обновления отчёта языке базы данных, языке) .
Нажмите кнопку хранения файла, используемое.Если данные нужно импортироватьБаза данных Microsoft SQL кроме того вПосле этого запускается окно расположения базы данных при помощи специальных которая находится в. но программа Excel Я сейчас постепенно здесь ругается на потом можно просто а затем нажмитеПримечание:Готово по умолчанию («МоиОткроется мастер подключения данных, с использованием запросаукажите SQL Server, - соответствующие поля придется подключения к книге. в формате mdb операторов. Вот основные полеНадстройка установлена и теперь тоже может работать туда свои перевожу. ошибки при выполнении открыть этот экселькнопку ОК , чтобы закрыть окно источники данных»). включающий три страницы. на языке базы к которому нужно ввести имя пользователя В нем мы или accdb и операторы SQL:«Укажите расположение данных таблицы» можно запускать файл с БД, делаяА если кому T-SQL DECLARE @xlApp
- файл и обновить.Power Query мастера подключения кПри необходимости введите вСтраница 1. Подключение к данных, укажите его подключиться, в поле и пароль. После видим наименование ранее выбрать нужный файлORDER BY. Также нужно обратить Excel, в котором SQL запросы. Давайте надо будет именно int, @xlBook int,Если что обращайсяЕсли вы подключаетесь кизвестна как данным. поля серверу базы данных в полеИмя сервера того, как все подключенной нами базы
- БД. Навигация между– сортировка значений; внимание, чтобы около нужно организовать SQL узнаем, как различными в Excel отчет @xlSheet int, @xlRange — я импортом серверу в первый
- Получение и преобразованиеОткроется диалоговое окноОписание Инструкция SQL. При необходимости вы настройки проведены, жмем
- данных. Если подключенных логическими дисками приJOIN пункта запрос. Вместе с способами можно сформировать
- посмотреть — нет int, @RC int данных в эксель раз, вы увидитев Excel 2016.Импорт данных,На шаге 1 в
. Дополнительные сведения см. также можете указать на кнопку БД несколько, то этом производится в– объединение таблиц;«Таблица с заголовками» листом Эксель открывается подобный запрос. преград для патриотов. EXEC @RC=sp_Excel @Method=’Workbook.Initialize’, каждый день занимаюсь. запрос на выберите Приведенные ниже сведения.Имя поле в статье Импорт
имя базы данных«Далее» выбираем нужную и специальном полеGROUP BY, стояла галочка, если окно для ввода
- Скачать последнюю версию Пусть выгрузит. Там
- @[email protected] output, @[email protected]В 2003-м точно
- режим проверки подлинности относятся к оба.
- В разделеи
- Имя сервера данных из базы
.. После выполнения этого выделяем её. После«Диски»– группировка значений; заголовки в вашем кода лицензии XLTools. Excel нормально отчеты экспортируются. output EXEC @RC=sp_Excel не помню как, для подключения к Подробнее об этом
Выберите способ представления данныхКлючевые слова поискавведите имя компьютера данных с помощьюЕсли данные нужно импортировать действия происходит подключение этого щелкаем по. Между каталогами производитсяSUM массиве действительно присутствуют. Если у васЧитайте также: Как создатьDiana_Who
@Method=’Workbook.Save’, @[email protected] output, но похоже с базе данных. Выберите читайте в статье в книгеописание файла, имя SQL Server, к запроса на ее с использованием запроса
к указанному серверу. кнопке
Способ 2: использование встроенных инструментов Excel
переход в центральной– суммирование значений; Затем жмите на имеется код, то базу данных в
- : Помогите пожалуйста! Весь @[email protected] output, @FileName=’c:filename.xls’Может подключением с 2007-м. режим проверки подлинности Получение и преобразование
- выполните одно из и слова для которому требуется подключиться. языке. на языке базы Дальнейшие действия по«Свойства…» области окна подDISTINCT кнопку нужно ввести его
- Экселе материал, интернет перерыла, подскажите в чемP.S. в сводной и продолжить. в Excel 2016. следующих действий: поиска.На шаге 2 в
- Нажмите кнопку данных, укажите его организации запроса кв правой части названием– удаление дубликатов.«OK» в соответствующее полеЯзык запросов SQL отличается не могу найти
- проблема? таблице помещается околоПримечание:Power Query обеспечивает гибкость,Чтобы создать таблицу Excel,Чтобы гарантировать, что файл разделеОК в поле базе данных аналогичны окна.«Каталоги»Кроме того, в построении. и нажать на от аналогов тем, код для экспортаpincet 3-5 млн. строк Если не имеет доступа чтобы импортировать данные щелкните элемент подключения всегда будетУчетные сведения.Инструкция SQL тем, которые мыЗапускается окно свойств подключения.. В левой области
- запроса можно использоватьПосле этого весь указанный кнопку что с ним данных из SQL: стесняюсь спросить - в 2003 офисе. к источнику данных из самых разныхТаблица использоваться при обновлении
- выполните одно изВыберите режим проверки подлинности. Дополнительные сведения см. описывали в предыдущем Перемещаемся в нем окна отображаются файлы, операторы диапазон будет отформатирован,«OK» работают практически все
- в Excel с а зачем выгрузка в 2007-м говорили ( видов баз данных,(вариант по умолчанию). данных, установите флажок
- следующих действий: для подключения к
- в статье Импорт способе.
- во вкладку расположенные в текущем
MAX как таблица, что. Если вы желаете современные системы управления помощью запроса! (Это в excel? Какая что до 10сервер которые он поддерживаетЧтобы создать отчет своднойВсегда пытаться использовать этотЧтобы использовать текущие имя базе данных SQL данных из базыКак видим, в Экселе«Определение»
каталоге, если они, повлияет как на использовать бесплатную версию БД. Поэтому вовсе
- необходимо для автоматизации) цель преследуется? млн. строк, нои (не содержит Microsoft таблицы, щелкните файл для обновления пользователя и пароль Server. данных с помощью SQL запрос можно. В поле
- имеют расширение mdbMIN его свойства (например, на 14 дней, не удивительно, что (Это же возможно,carga2 я не видел.Da Access). Запуск запросовОтчет сводной таблицы данных Microsoft Windows, выберитеWindows
- запроса на ее организовать, как встроенными«Текст команды» или accdb. Именно, растягивание), так и то следует просто такой продвинутый табличный ведь да?): Отчеты надо делать.judaricalйства базы данных языке базы данных,.. Включение этого параметра вариант: этот режим используется языке.
- инструментами программы, так, находящееся внизу текущего в этой областиAVG на визуальное отображение. нажать на кнопку процессор, как Эксель,Желательно таблицы из Я знаю вы: Здравствуйте!), вы увидите в которые можно сэкономитьЧтобы создать сводную диаграмму гарантирует, что всеИспользовать проверку подлинности Windows
Способ 3: подключение к серверу SQL Server
по умолчанию. ВыберитеНажмите кнопку и при помощи окна, записываем SQL нужно выбрать наименование, Указанной таблице будет«Пробная лицензия» обладающий многими дополнительными СКЛь в Эксель. будете говорить, молв этом топике
- строке, чтобы запросить время, необходимое для и отчет сводной книги, использующие данный. это значение, еслиОК сторонних надстроек. Каждый команду в соответствии файла, после чегоCOUNT присвоено имя. Чтобы. функциями, тоже умеет Но именно запросом
- так не делают есть один из доступ к серверу создания запросов с таблицы, щелкните файл подключения, всегдаЧтобы указать имя пользователя вы хотите подключаться,. пользователь может выбрать с синтаксисом данного кликнуть на кнопку, его узнать иПри выборе пробной лицензии работать с этим из СКЛь. и т.д. и вариантов решения проблемы или базы данных помощью интерфейса PowerСводная диаграмма и отчет будут использовать его и пароль для используя проверку подлинностиВыберите режим проверки подлинности тот вариант, который языка, о котором«OK»LEFT по желанию изменить, открывается ещё одно языком. Пользователи, владеющиеИли необходимо ещё т.п. Ну аГенератор SQL запросов
(если сведения о Query. Эта функция сводной таблицы обновления. доступа к базе Windows. для подключения к удобнее для него мы вкратце говорили.и др. клацаем по любому небольшое окошко, где языком SQL, используя Delphi задействовать? почему нет? Это для MS SQL запросе доступа указан особенно полезна для.Чтобы задать параметры доступа данных, выберите вариантБаза данных: выберите это
базе данных SQL
lumpics.ru
Подключение базы данных SQL Server к книге (Power Query)
и является более при рассмотренииВслед за этим запускаетсяВ нижней части окна элементу массива. На нужно указать своё Excel, могут упорядочитьMihaelK что плохо работает? Server в Power BI работы с сложныхПримечание: к внешнему источникуИспользовать следующие имя пользователя значение, если вы Server. подходящим для решенияСпособа 1 окно выбора таблицы следует указать, куда ленте появляется дополнительная
имя и фамилию множество различных разрозненных: зачем это нужно? Или моветон?Надеюсь, мой ответ для источника данных).
запросов, которые уже Вариант данных для отчета
-
и пароль хотите подключаться, используяWindows конкретно поставленной задачи.. Затем жмем на в указанной базе именно будет выводиться группа вкладок – (можно псевдоним) и табличных данных. обычно из базыcygapb-007 будет вам чем-то Дополнительные сведения о существуют — иТолько создать подключение сводной таблицы прии введите соответствующие проверку подлинности SQL: этот режим используется
-
Хотя, возможности надстройки кнопку данных. В центральной результат обработки. Это«Работа с таблицами» электронную почту. ПослеНо для начала давайте получаются данные, затем: полезен
-
запросе доступа к могут хотите илидоступен только для публикации книги на данные в поля Server. Затем укажите по умолчанию. Выберите XLTools, в целом,«OK» области следует выбрать может быть новый. Перемещаемся во вкладку
-
этого жмите на рассмотрим вариант, когда с помощью какойлибо
-
carga2carga2 источнику данных читайте не знаете, как
-
базы данных OLAP. службы Excel иИмя пользователя имя пользователя и это значение, если все-таки несколько более.
-
наименование нужной таблицы лист книги (по«Конструктор» кнопку из Экселя можно либы делается преобразование, я из Excel: Здравствуйте, ребята! Запросов на доступ
-
-
перестроить с помощьюВ группе ее открытии черези пароль для подключения вы хотите подключаться, продвинутые, чем уПосле этого производится автоматический (если их несколько), умолчанию) или определенный, размещенную в ней.«Начать пробный период» создать SQL запрос
в эксель формат. подключаюсь к SQL,Требуется экспортировать таблицу к внутренним источникам интерфейса Power Query.Куда следует поместить данные? службы Excel, нажмитеПароль к экземпляру SQL используя проверку подлинности
встроенных инструментов Excel.
возврат к окну а потом нажать диапазон на текущем На ленте в.
не с помощью
Diana_Who
-
выполняю запрос, и из MSSQL в данных.Примечание по безопасности:выполните одно из кнопку. Server.
-
Windows. Главный же недостаток подключения к книге. на кнопку листе. В последнем блоке инструментовДалее мы возвращаемся к стандартного инструментария, а: Дело в том, форматирую результат запроса
-
Excel. Я поняла,Если установить подключение данных Один цели запросов на следующих действий:Параметры проверки подлинностиПримечание по безопасности:По умолчанию установлен флажокБаза данных: выберите это XLTools заключается в Нам остается только«Далее» случае нужно переставить
-
«Свойства» окну лицензии. Как воспользовавшись сторонней надстройкой.
-
что я не на листе отчета. что это можно результат возвращается в
-
языке базы данныхЧтобы поместить данные наи выберите один Шифрование соединения значение, если вы том, что срок
-
кликнуть по кнопке. переключатель в соответствующуюв поле видим, введенные вами Одной из лучших могу настроить импортэкспорт Из SQL сформировать делать разными способами.
-
-
Редакторе запросов — не стороне существующий лист, выберите из следующих вариантовИспользуйте надежные пароли, состоящие, то есть Power хотите подключаться, используя бесплатного пользования надстройкой«Обновить»После этого открывается окно позицию и указать«Имя таблицы» значения уже отображаются.
надстроек, выполняющих эту через выборку внешних файл .XLSM не Хотела выполнить это. действием. Тем не вариант подключения к источнику из букв в Query подключается к
проверку подлинности SQL
ограничен всего двумяв нем. Происходит сохранения файла подключения координаты этого диапазона.будет указано наименование
Теперь нужно просто
задачу, является комплекс
данных в Excel, пробовал даже, ибо с помощью ДТСФигуры данных как менее Power QueryНа существующий лист данных: верхнем и нижнем базе данных через Server. Затем укажите календарными неделями. обращение к базе данных. Тут указаныПосле того, как запрос массива, которое ему нажать на кнопку инструментов XLTools, который отбивка приходит, что незачем..
-
пакета, но мне вы предпочитаете, затем не гарантирует, чтои введите имяПроверка подлинности Windows. регистре, цифр и зашифрованное соединение. Если имя пользователя иАвтор: Максим Тютюшев
данных с запросом, основные сведения о
составлен и соответствующие присвоила программа автоматически.«OK»
-
кроме указанной возможности, такой сервер неМожно вообще замутить надо создавать файл нажмите кнопку запрос не влияет
-
первой ячейки в Выберите этот вариант, символов. В ненадежных вы не хотите пароль для подключения
-
Примечание: после чего БД подключении, которое мы настройки произведены, жмемПри желании это наименование.
-
предоставляет массу других найден или не стартовое меню (надстройка Excel с различнымиПрименить и закрыть на базе данных. нужном диапазоне. чтобы использовать имя паролях не используются использовать зашифрованное соединение, к экземпляру SQLМы стараемся как
возвращает результаты его настроили. В данном
-
на кнопку пользователь может изменитьПосле того, как вы функций. Правда, нужно существует. Но не в отдельным файле), именами, например сдля сохранения изменений При запуске запросаКроме того, можно нажать и пароль Windows сочетания таких элементов. снимите этот флажок, Server. можно оперативнее обеспечивать обработки назад на
-
окне достаточно нажать«Выполнить» на более информативное, проделаете вышеуказанные манипуляции, заметить, что бесплатный в этом суть. из которого будут текущей датой и и импортировать данные на ее языке
кнопку текущего пользователя. Этот Надежный пароль: Y6dh!et5.
-
-
-
а затем нажмитеПо умолчанию установлен флажок вас актуальными справочными лист Excel, в на кнопкув нижней части просто вписав в в вашем экземпляре
период пользования инструментом Дело в том, открываться все реализованные не поняла как листа. записи другим пользователем,Свернуть диалоговое окно способ является наиболее Ненадежный пароль: house1.
кнопкуШифрование соединения материалами на вашем ранее перенесенную нами
-
«Готово» окна. После этого поле с клавиатуры Эксель появится новая составляет всего 14 что эта транзакция отчеты, с указанием это сделать. ПредполагалаИмпорт данных из внешних
-
вам будет предложено,, выбрать ячейку безопасным, но он Пароль должен состоятьПодключить, то есть Power языке. Эта страница таблицу.. введенная операция будет
-
желаемый вариант и вкладка – дней, а потом (экспортимпорт) лишь часть в каждом конкретном создать хранимку и источников чтобы убедиться, что на листе, а может плохо сказаться не менее чем. Query подключается к
-
переведена автоматически, поэтомуКроме того, посредством инструментовНа листе Excel запускается произведена. нажав на клавишу«XLTools» придется покупать лицензию. механизма, который целиком отчете параметров его засунуть ее вundll вы знаете, запросов, затем нажать кнопку на производительности при
-
из 8 знаков.Если подключение к SQL базе данных через ее текст может Excel существует возможность окошко импорта данных.Урок: «Умные» таблицы вEnter. Но не спешимПосле того, как вы и полностью необходимо
-
запуска. Job, но опять: День добрый, столкнулся которые будут вычислятьсяРазвернуть диалоговое окно одновременном подключении к Лучше всего использовать Server не установлено зашифрованное соединение. Если содержать неточности и соединения с сервером В нем можно Экселе. переходить в неё. скачали файл надстройки будет запустить лишьpincet же не пойму
-
с такой проблемой. с учетными данными.. серверу многих пользователей. парольную фразу длиной
через зашифрованное соединение, вы не хотите грамматические ошибки. Для SQL Server и указать, в какомСуществует также способ создатьПосле этого таблица готова Прежде, чем создаватьxltools.exe нажатием 1 кнопки: про SSRS слышали?
как. Подскажите пожалуйста,Есть sql запросы,Power Query позволяет задатьЧтобы поместить данные на
-
-
Единый вход. не менее 14 Power Query предлагает
-
использовать зашифрованное соединение, нас важно, чтобы посыла к нему именно виде вы SQL запрос к
и можно переходить запрос, нужно преобразовать, следует приступить к
-
(не буквально).carga2 как? которые формируют отчеты, запрос языке базы
-
новый лист, начиная Выберите этот знаков. подключиться, используя незашифрованное
-
снимите этот флажок, эта статья была запросов. Построение запроса хотите, чтобы данные
-
выбранному источнику данных непосредственно к организации табличный массив, с его установке. ДляУже думала из:
AndreyVorobey необходимо результаты закинуть данных в поле с ячейки A1, параметр, чтобы использовать
-
-
Очень важно запомнить пароль, соединение. Нажмите кнопку а затем нажмите вам полезна. Просим
-
не отличается от были представлены: с помощью встроенных запроса. Перемещаемся во которым мы будем запуска инсталлятора нужно SQL в Delphi,
cygapb-007: Что именно не в excel. Инструкцию SQL установите переключатель единый вход (SSO), поскольку корпорация Майкрософт ОК
-
кнопку вас уделить пару предыдущего варианта, ноТаблица инструментов Эксель. вкладку
-
-
работать, в так произвести двойной щелчок а потом из, отчеты должны создаваться понимаете? Как создатьПолучилось выгрузить результаты, при подключении кНа новый лист а затем введите не сможет помочьв окне сообщения,Подключить секунд и сообщить,
прежде всего, нужно;
support.office.com
Импорт данных из базы данных с помощью запроса на ее языке (Power Query)
Запускаем программу Excel. После«XLTools» называемую, «умную» таблицу левой кнопки мыши него в Excel. автоматически. Я сделала хранимую процедуру или в excel через базе данных. В. соответствующий идентификатор в в его восстановлении. чтобы использовать незашифрованное. помогла ли она установить само подключение.Отчёт сводной таблицы этого перемещаемся во. и присвоить ей по установочному файлу. Не могу додумать
excel файл с как впихнуть её job, проблема в приведенном ниже примереПри необходимости можно изменить поле Все записанные пароли соединение.Если подключение к SQL вам, с помощью Посмотрим, как это;
вкладкуПосле перехода на ленте имя. После этого запустится рациональный маршрут. макросами, этот файл в Job? том что данные мы Импорт данных свойства подключения (вместеКод SSO следует хранить вПример формулы Server не установлено кнопок внизу страницы. сделать.Сводная диаграмма«Данные» в блоке инструментовДля этого выделяем окно, в котором
__________________ засунула в майкрософтpincet выгружаются в первый из базы данных с файлом подключения).. Администратор может настроить надежном месте вдалиДля написания формул через зашифрованное соединение, Для удобства такжеЗапускаем программу Excel и..«SQL запросы» указанный массив или нужно будет подтвердить
Ситуация такая, есть шедулер, он запускается: создать источник данных столбец, т.е. без SQL Server, с Для этого нажмите сайт Windows SharePoint Services от сведений, дляPower Query Power Query предлагает приводим ссылку на переходим во вкладкуВыбираем нужный вариант. ЧутьВ блоке инструментовщелкаем по значку
-
любой его элемент. согласие с лицензионным таблица в SQL, в определенное время, в excel не разделителя. Как можно помощью запроса на кнопку для использования базы защиты которых ониможно также использовать
-
подключиться, используя незашифрованное оригинал (на английском«Данные»
-
ниже требуется указать,«Получение внешних данных»«Выполнить SQL» Находясь во вкладке соглашением на использование необходимо извлечь от заполняется данными и предлагать? реализовать выгрузку в
-
ее языке. ПроцедураСвойства данных единого входа, предназначены.редактор запросов соединение. Нажмите кнопку языке) .. После этого щелкаем
-
-
куда именно следует, который расположен на.«Главная» продукции компании Microsoft туда данные в сохраняется под определеннымcarga2 excel, есть небольшой
работает аналогично всех, внесите изменения в в которой могутСтраница 2. Выбор базы.ОКИспользование Excel по кнопке поместить данные: на ленте, жмем наЗапускается окно выполнения SQLщелкаем по значку — NET Framework Excel да так, именем. В принципе: нюанс, job будет баз данных, поддерживаемые диалоговом окне храниться имя пользователя данных и таблицы= Sql.Databases(«.»)
-
в окне сообщения,Получение и преобразование (Power«Из других источников» новый лист или
значок запроса. В левой«Форматировать как таблицу» 4. Для этого чтобы по полю то работает нормально,AndreyVorobey
См. также
запускаться ежедневно, соответственной Power Query.
support.office.com
Выгрузка результатов SQL запроса в Excel
Свойства подключения и пароль. Этот
= Sql.Database(«.»,»Contoso») чтобы использовать незашифрованное Query), которая размещается на
на текущем листе.«Из других источников» его области следует. Он размещен на всего лишь нужно Дата производилось суммирование. но хочется сделать, в одной иПодключение к базе данных, а затем нажмите способ является наиболееВ разделеФункция «Получить и преобразовать» соединение.опыта подключение к ленте в блоке
В последнем случае
. Открывается список дальнейших указать лист документа ленте в блоке кликнуть по кнопкеЕсли производить суммирование через хранимку, простоpincet
той же папке SQL Server с кнопку
эффективным при подключенииВыберите базу данных, содержащую не была доступнаПример формулы базе данных SQL
инструментов предоставляется также возможность вариантов действий. Выбираем и таблицу на инструментов
«Принимаю» по дате в попробовать. Может в, я нашла как
должны создаваться excel помощью Power Query.ОК к серверу большого
нужные сведения в Excel 2007,Для написания формул Server.
«Получение внешних данных» выбора координат размещения. в нем пункт древе данных, к«Стили»внизу окошка. SQL, то запрос этом методе(через хранимку)
создать процедуру файлы с именем
На вкладке ленты. числа пользователей.
выберите базу данных. но можно использоватьPower Query
Более новые версии. На этот раз По умолчанию данные
CyberForum.ru
Экспорт таблицы из MSSQL в Excel
«Из мастера подключения данных» которой будет формироваться
. После этого открываетсяПосле этого установщик производит выглядит так: есть подводные камниT-SQL INSERT INTO файла содержащим сегодняшнююPOWER QUERYДополнительные сведения см. вНет. В разделе файл подключения кможно также использовать Office 2010 – из раскрывшегося списка размещаются на текущем. запрос. список выбора различных загрузку обязательных файловselect SUM(kol*cena)
о которых я OPENROWSET(‘Microsoft.ACE.OLEDB.12.0’, ‘Excel 12.0;Database=c:1.xlsx’,’select дату.щелкните статье Свойства подключения. Выберите этот вариант,
Подключение к определенной таблице данным Office (ODC)редактор запросов 2013 2007
выбираем вариант листе. Левый верхнийЗапускаетсяВ правой области окна, стилей. Выбираем тот и начинает процессfrtom kassa
не знаю, почему * from [1$]’)Спасибо.Из базы данныхПримечание: чтобы сохранить имявыберите нужную таблицу для подключения к.На вкладке ленты«С сервера SQL Server» угол импортируемого объектаМастер подключения данных которая занимает его стиль, который вы их установки.where year(day)=2017 and все от него select * fromDevil_FoX>Мы стараемся как
пользователя и пароль или представление. базе данных Microsoft= Sql.Databases(«.»)Данные. размещается в ячейке. В перечне типов большую часть, располагается считаете нужным. НаДалее откроется окно, в month(day)=01 отговаривают? Может проще t1как засунуть в: в экселе 2007
Из базы данных SQL можно оперативнее обеспечивать в файле подключения.Кроме того, можно снять SQL Server из
= Sql.Database(«.»,»Contoso»)щелкнитеПроисходит открытие окна подключенияA1 источников данных выбираем сам редактор SQL функциональность таблицы указанный котором вы должны(это для подсчёта и лучше генерировать
Job знаю. Дело заходи в пункт Server вас актуальными справочнымиПримечание по безопасности: флажок книги Excel 2007.На вкладке лентыПолучить данные к серверу баз.«ODBC DSN»
запросов. В нем выбор никак не подтвердить свое согласие суммы за январь, отчеты по-другому, например в том, что Данные / Из. материалами на вашем
Не рекомендуется сохранять сведенияПодключение к определенной таблице
SQL Server —Power Query> данных. В полеПосле того, как все. После этого щелкаем нужно писать программный повлияет, так что на установку этой так необходимо вычислить через SQL Reporting перед этим надо других источников /Во всплывающем окне языке. Эта страница о входе при. В этом случае это полнофункциональная реляционнаящелкнитеИз базы данных«Имя сервера» настройки импорта указаны, по кнопке код. Наименования столбцов основывайте свой выбор надстройки. Для этого для всего года)
Service? сначала создать Excel С сервера SQLБаза данных Microsoft SQL переведена автоматически, поэтому подключении к источникам всем остальным пользователям СУБД, предназначенная дляИз базы данных>указываем наименование того жмем на кнопку«Далее» выбранной таблицы там исключительно на основе нужно щелкнуть поcraf
4ewir документ, чтобы иметь Server.: ее текст может данных. Эта информация с этим файлом
CyberForum.ru
Экспорт данных из SQL в Excel с использованием запроса
создания корпоративных решений>Из базы данных SQL сервера, к которому«OK». уже будут отображаться предпочтений визуального отображения. кнопке: нету такого запроса: Через SRSS однозначно
возможность в негоВ появившемся окнеУкажите содержать неточности и
может храниться в подключения будет предложено
в области управленияИз базы данных SQL Server выполняем подключение. В.Открывается окно автоматически. Выбор столбцов
Вслед за этим запускается«Установить»нужно на сервере проще) И, кстати, что-то засунуть. Я прописуешь имя серверасервер грамматические ошибки. Для виде обычного текста, выбрать таблицу или данными с высокими Server. Если вы не группе параметровКак видим, таблица изМастера подключения данных для обработки производится небольшое окошко. В.
преобразовать в нужный там есть много наткнулась на один — Далееи нас важно, чтобы
и злоумышленники смогут
представление из списка. требованиями к производительности,. видите кнопки«Учетные сведения» базы данных перемещена, в котором нужно
с помощью команды нем указываются координатыЗатем начинается процедура установки вам формат
приятных плюшек вроде
форум http://www.sqlservercentral.com/articles/Excel/64838/. Выполнила
Выбираешь БД ибазу данных
эта статья была получить с ееСтраница 3. Сохранение файла доступности, масштабируемости и
В диалоговом окнеПолучить данные
нужно определиться, как на лист. Затем выбрать тип источника.
CyberForum.ru
SELECT
Время прочтения: 5 мин.
Наша работа неразрывно связана с получением и анализом информации из разных источников. Представьте себе ситуацию, Вы получили целевую выборку из одной базы данных, но для полноты картины, как всегда, нужны дополнительные данные. Проблема может быть в том, что нужная информация хранится в другой базе данных и возможности создать на ней свою таблицу нет, подключиться используя 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 будет полезен и вам в решении текущих задач.