Tags

, , , , , , ,

In this article I will explain how you can export values from an excel worksheet to a new blank Access table.


Step 1:

The first step would be to connect to an existing access database or create a new access database. In this example we will be connecting to an existing database. It is assumed:

  • The database is located in the path “D:\Stuff\Business\Temp”
  • The database file has the name “NewDB.accdb”

Early Binding:

Note: In early binding reference must be added to the Access Object Library. For more information please see the article below:

Sub Example1()
'the path to create the new access database
Dim strPath As String
'an Access object
Dim objAccess As Access.Application

strPath = "D:\Stuff\Business\Temp\NewDB.accdb"
Set objAccess = New Access.Application
Call objAccess.OpenCurrentDatabase(strPath)
objAccess.Visible = True
End Sub

Late Binding:

Sub Example2()
'the path to create the new access database
Dim strPath As String
'an Access object
Dim objAccess As Object

strPath = "D:\Stuff\Business\Temp\NewDB"
Set objAccess = CreateObject("Access.Application")
Call objAccess.OpenCurrentDatabase(strPath)
objAccess.Visible = True
End Sub


Step 2:

The next step would be to export the values from the worksheet to the access table. This is done through the Access.DoCmd.TransferSpreadsheet Method:

Syntax:

Call DoCmd.TransferSpreadsheet(TransferType, SpreadSheetType, TableName, Filename, HasFieldNames, Range)

TransferType: The type of transfer going to be performed. In this example it is acImport.
SpreedSheetType: The worksheet type. For more information please see the link below:

TableName: The name of the table the values will be imported to.
FileName: The full path of the excel file. In this example it is assumed the excel file is located in the path “D:\Stuff\Business\Temp\Worksheet to access table.xlsm”
HasFieldNames: If this value is set to true, the top row of the selected range will be chosen as the field names.
Range: A valid string value that represents a range in the excel worksheet

For more information about the DoCmd.TransferSpreadsheet command please see the link below:


Example:

Assume we have the following data in the excel worksheet:
Example1
We want to export these values to the access database. We want the first row to become the field names of the table. The data will imported to to a new table with the name “MyTable1”:

Sub Example3()
'the path to create the new access database
Dim strPath As String
'an Access object
Dim objAccess As Access.Application
Dim strExcelPath As String

strPath = "D:\Stuff\Business\Temp\NewDB.accdb"
strExcelPath = "D:\Stuff\Business\Temp\Worksheet to " & _
"access table.xlsm"
Set objAccess = New Access.Application
Call objAccess.OpenCurrentDatabase(strPath)
objAccess.Visible = True
Call objAccess.DoCmd.TransferSpreadsheet(acImport, _
acSpreadsheetTypeExcel8, "MyTable1", strExcelPath, _
True, "A1:D11")
End Sub

Result:
Result

Note: If the range was in a different sheet (for example sheet2) you could have used the following string expression:

"Sheet2!A1:D11"

You can download the file and code related to this article from the link below:

See also:

If you need assistance with your code, or you are looking for a VBA programmer to hire feel free to contact me. Also please visit my website  www.software-solutions-online.com