Существует масса способов извлечь данные из внешних источников в лист
Вы также можете получать данные из интернета, текстовых файлов или других Excel или
Итак, нам нужно соединение с базой данных (переменная varConn в макросе ниже) и SQL запрос (переменная varSQL ), чтобы автоматизировать получение данных из базы для отчета. В примере ниже есть SQL запрос , который получает данные из небольшой базы данных в MS Access.
Нажмите скачать базу данных
Файл MS Access будет выглядеть так:
Давайте напишем свой макрос, который будет совершать SQL запрос .
Откройте меню Сервис - Макрос - Редактор Visual Basic , вставьте новый модуль (меню Insert - Module ) и скопируйте туда текст макроса:
Sub SQLQuery_1() 'moonexcel.com.ua Dim varConn As String Dim varSQL As String Range("A1").CurrentRegion.ClearContents varConn = "ODBC;Driver={Microsoft Access Driver (*.mdb, *.accdb)}" varSQL = "SELECT Month, Product, City FROM Sumproduct" With ActiveSheet.QueryTables.Add(Connection:=varConn, Destination:=Range("A1")) .CommandText = varSQL .Refresh BackgroundQuery:=False End With End Sub
Нажимаем сохранить и возвращаемся к Excel. Выбираем в меню Вид - Макросы (Alt+F8) название нашего макроса SQLQuery_1 ". Появится диалоговое окно, жмем База данных... , ищем наш файл Access и жмем
Теперь видим, что наш макрос-запрос подтянул колонки.
Аналогично мы можем получать данные из обычного файла Excel, как из базы данных. Для этого код нашего макроса нужно немного переписать и сменить драйвер подключения с Access на Excel.
Экспортируем таблицу
Sub SQLQuery_2() 'moonexcel.com.ua Dim varConn As String Dim varSQL As String Range("A1").CurrentRegion.ClearContents varConn = "ODBC;Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)}" varSQL = "SELECT Month, Product, City FROM Sumproduct" With ActiveSheet.QueryTables.Add(Connection:=varConn, Destination:=Range("A1")) .CommandText = varSQL .Refresh BackgroundQuery:=False End With End Sub
Появится окно, в котором мы можем выбрать наш файл Excel (должно называться