VBA Code to Import Access Table /Query data to Excel

Import Access Table to Excel with VBA (Images and Code)

What is it?

This VBA code helps you to download or import Access Table data or Query to Excel in one click.

Why is it?

You can import Access table data to Excel without even opening the Access DB.

How to import Access table data to Excel

Step 1: Open the Excel Workbook and got to VBA code builder (Alt + F11) and Open a New Module.


Step 2: Copy and Paste the below code in it.

Sub importAccessdata()

Dim cnn As ADODB.Connection

Dim rs As ADODB.Recordset

Dim sQRY As String

Dim strFilePath As String

strFilePath = “C:\DatabaseFolder\myDB.accdb”   ‘Replace the ‘DatabaseFolder’ and ‘myDB.accdb’ with your DB path and DB name

Set cnn = New ADODB.Connection

Set rs = New ADODB.Recordset

cnn.Open “Provider=Microsoft.ACE.OLEDB.12.0;” & _

“Data Source=” & strFilePath & “;”

sQRY = “SELECT * FROM tblData” ‘Replace ‘tblData’ with your Access DB Table name or Query name from which you want to download the data

rs.CursorLocation = adUseClient

rs.Open sQRY, cnn, adOpenStatic, adLockReadOnly

Application.ScreenUpdating = False

Sheet1.Range(“A1”).CopyFromRecordset rs


Set rs = Nothing


Set cnn = Nothing

Exit Sub

End Sub

Step 3: Click the Run button or F5 (Also you can insert a button/shape in excel sheet then right click and assign this macro to run everytime.)

import access table

Access DB records have been successfully downloaded to Excel, Open your Excel workbook and check the data.

Note: Make sure ‘Microsoft ActiveX Data Objects Library’ is enabled from the Tools – References (number use latest version [6.1 as of this post]).

import access table


About Anson

I’m Anson having a decade of versatile experience in Business Process Outsourcing, Finance & Accounting, Information Technology, Operational Excellence & Business Intelligence. I have got the opportunity to work for Genpact, Hewlett Packard, M*Modal and Capgemini in various roles and responsibilities, starting from an Associate to a Manager. Learning anything new has always been my passion and if related to Business and Technology then I love it. asKeygeek.com is an outcome of my passion towards the same and I have been into asKeygeek since 2012. Outside business and technology I’m a movie buff who spends hours together watching and learning Cinema, I do make Short Films 🙂


  1. Hi , wanted to check if I keep my Access DB in shared drive and distribute this excel macro in my organisation, will it work ? I want my excel macro to read some values from this Access DB and then update some variable when opening excel .

    Also if Access doesn’t work , whether I can use another excel kept in organisation one drive and access it instead of DB. I tried with workbook open method in my macro to read my onedrive excel which is shared to all in my company but it did not work .

  2. Compile error in line 5, 8, 9…

  3. I finallly did.

    i’m using 2 variables (textbox1 as value ‘currency, format R$0.000,00’ and textbox2 as ‘date’, format mm/dd/yyyy)

    Code ↓

    ‘========================================== Kauê Vaz==|

    Option Explicit

    ‘ Click Tools, References and select
    ‘ Microsoft ActiveX Data Objects 2.0 Library
    Sub getDataFromAccess(strValue, strDate)

    Dim DBFullName As String
    Dim Connect As String, Source As String
    Dim Connection As ADODB.Connection
    Dim Recordset As ADODB.Recordset
    Dim Col As Integer
    Dim mySQLVariable As String
    Dim mySQLVariable_1 As String
    Dim strSQL As String

    mySQLVariable = strValue ‘Value from textbox1 (Currency format R$0.000,00)
    mySQLVariable_1 = strDate ‘Value from textbox2 (Date format mm/dd/yyyy)

    ‘SQL code
    strSQL = “SELECT * FROM tblDatabase WHERE ”
    strSQL = strSQL & ” [Value] = ‘” & (mySQLVariable) & “‘ and ”
    strSQL = strSQL & ” [Date] = ‘” & (mySQLVariable_1) & “‘ ”

    ‘ Database, select your database access
    DBFullName = “C:\Users\Desktop\Databases\BD_PaynotProcess\bd_PaynotProcess.accdb”

    ‘ Open connection
    Set Connection = New ADODB.Connection
    Connect = “Provider=Microsoft.ACE.OLEDB.12.0;”
    Connect = Connect & “Data Source=” & DBFullName & “;”
    Connection.Open ConnectionString:=Connect

    ‘ Creat RecordSet
    Set Recordset = New ADODB.Recordset
    With Recordset

    ‘ Search values using SQL Code variable strSQL
    Source = strSQL
    .Open Source:=Source, ActiveConnection:=Connection

    ‘ Importing columns from Database.
    For Col = 0 To Recordset.Fields.Count – 1
    Range(“A5”).Offset(0, Col).Value = Recordset.Fields(Col).Name

    ‘ Importing lines from Database.
    Range(“A5”).Offset(1, 0).CopyFromRecordset Recordset
    End With

    Set Recordset = Nothing
    Set Connection =


    End Sub


  4. Can i import just some datas? Filtering by 2 variables?

    X = 13/03
    Y = ‘122315124’

    Bring from the access bd just the lines that contains this variables?

  5. Worked for me. Thank you very much!

  6. This is the best query I have ever seen. Could you please help in adding a Where clause in the sql statement. I tried modifying your query but it throws error.

  7. Pingback: VBA code to Execute Access Query (with Image)

  8. Pingback: VBA Code to Import Access Table/Query data to E...

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.