Існує маса способів отримати дані із зовнішніх джерел у аркуш
Ви також можете отримувати дані з інтернету, текстових файлів чи інших 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 (має називатись