Thanks, this site has what would be an excellent start to my project, however when I try to run the code, nothing happens. Any suggestions? I changed the path to my file name and changed the password setting to vbNullString. I entered it into a module as a function and tried to run it using a macro runcode function name. I don't know what's stopping it from doing anything, as the debugger doesn't even come up
Import Data from All Worksheets in All EXCEL
Files in a single Folder into Separate Tables via TransferSpreadsheet
(VBA)
Generic code to import the data from
all worksheets in all EXCEL files in a single folder. Each worksheet's data will
be imported into a separate table whose name is 'tbl' plus the worksheet name
plus an integer value that represents a "counter" for the workbooks
(e.g., "tblWorksheetName1").
Dim blnHasFieldNames As
Boolean, blnEXCEL As Boolean, blnReadOnly As Boolean
Dim intWorkbookCounter
As Integer
Dim lngCount As Long
Dim objExcel As Object, objWorkbook As
Object
Dim colWorksheets As Collection
Dim strPath As String, strFile As
String
Dim strPassword As String
' Establish an
EXCEL application object
On Error Resume Next
Set objExcel =
GetObject(, "Excel.Application")
If Err.Number <> 0 Then
Set
objExcel = CreateObject("Excel.Application")
blnEXCEL = True
End
If
Err.Clear
On Error GoTo 0
' Change this next
line to True if the first row in EXCEL worksheet
' has field
names
blnHasFieldNames = False
' Replace
C:\MyFolder\ with the actual path to the folder that holds the EXCEL
files
strPath = "C:\MyFolder\"
' Replace
passwordtext with the real password;
' if there is no password,
replace it with vbNullString constant
' (e.g., strPassword =
vbNullString)
strPassword = "passwordtext"
blnReadOnly =
True ' open EXCEL file in read-only
mode
strFile = Dir(strPath &
"*.xls")
intWorkbookCounter = 0
Do While strFile <>
""
intWorkbookCounter = intWorkbookCounter + 1
Set
colWorksheets = New Collection
Set objWorkbook =
objExcel.Workbooks.Open(strPath & strFile, , _
blnReadOnly, ,
strPassword)
For lngCount = 1 To
objWorkbook.Worksheets.Count
colWorksheets.Add
objWorkbook.Worksheets(lngCount).Name
Next lngCount
' Close the EXCEL file without saving the file, and clean up the
EXCEL objects
objWorkbook.Close False
Set objWorkbook =
Nothing
' Import the data from each worksheet
into a separate table
For lngCount = colWorksheets.Count To 1
Step -1
DoCmd.TransferSpreadsheet acImport,
acSpreadsheetTypeExcel9, _
"tbl" &
colWorksheets(lngCount) & intWorkbookCounter, _
strPath
& strFile, blnHasFieldNames, _
colWorksheets(lngCount)
& "$"
Next lngCount
' Delete the
collection
Set colWorksheets = Nothing
'
Uncomment out the next code step if you want to delete the
' EXCEL
file after it's been imported
' Kill strPath & strFile
strFile = Dir()
Loop
If blnEXCEL = True Then
objExcel.Quit
Set objExcel = Nothing