So you want to be able to import your csv for 1 to multiple files. Here’s how you do it.
1. up a form with a button.
2. After you click the button, you will get a File Dialog Box that will show you the csv files to choose from:
Here is the code behind the “Import” button:
Private Sub btnCSVImport_Click()
'vba csv import
Dim strSQL As String
Dim strFileName As String
Dim varCSVFiles As Variant
On Error GoTo errhandler
varcsvfiles1 = get_files(strStart, "Select Your CSV File")
If Len(varcsvfiles1) Then
varCSVFiles = Split(varcsvfiles1, ",")
For i = LBound(varCSVFiles) To UBound(varCSVFiles) - 1
'import all files selected
DoCmd.TransferText acImportDelim, , "csv_import", varCSVFiles(i), False
Next i
'delete all of the "ImportErrors" tables
CleanUpStrayTables
MsgBox "Import Completed.", vbInformation
Else
MsgBox "You didn't select any files"
Exit Sub
End If
Exit Sub
errhandler:
MsgBox Err.Number & " - " & Err.Description, vbInformation
DoCmd.SetWarnings True
End Sub
Public Function get_files(start_here, title_bar As String) As Variant
Dim intChoice As Integer
Dim strPath As String
Dim varSelectedItem As Variant
'IMPORTANT: needs reference to the MS office object library
'only allow the user to select one file
With Application.FileDialog(msoFileDialogOpen)
.AllowMultiSelect = True
.InitialFileName = start_here
.Title = title_bar
End With
'make the file dialog visible to the user
intChoice = Application.FileDialog(msoFileDialogOpen).Show
'determine what choice the user made
If intChoice <> 0 Then
'get the file path selected by the user
For Each varSelectedItem In Application.FileDialog(msoFileDialogOpen).SelectedItems
'Return File Name and Path
'every file selected will be stored in the function's "array", delimited by the comma.
get_files = varSelectedItem & "," & get_files '<< Something needs to happen here to put selected files (1 or more) into an array to return
Next varSelectedItem
End If
End Function
Sub CleanUpStrayTables()
Dim intTable As Integer
Dim tdf As DAO.TableDef
Dim strTableName As String
For intTable = CurrentDb.TableDefs.Count - 1 To 0 Step -1
strTableName = CurrentDb.TableDefs(intTable).Name
Debug.Print strTableName
If InStr(1, strTableName, "ImportErrors") Then
DoCmd.DeleteObject acTable, strTableName
End If
Next
End Sub
Since you are going to get the annoying "ImportErrors" tables, because we didn't use a specification, you probably want to delete them. That's why the "CleanUpStrayTables" procedure is here. It basically loops your tables and delete the ones called "ImportErrors".
Here is what it will look like if you don't use the "CleanUpStrayTables" procedure:
It's pretty straight forward:
Sub CleanUpStrayTables()
Dim intTable As Integer
Dim tdf As DAO.TableDef
Dim strTableName As String
For intTable = CurrentDb.TableDefs.Count - 1 To 0 Step -1
strTableName = CurrentDb.TableDefs(intTable).Name
Debug.Print strTableName
If InStr(1, strTableName, "ImportErrors") Then
DoCmd.DeleteObject acTable, strTableName
End If
Next
End Sub
That's all, let me you if you have questions, and share this with someone else.
How To Parse A Flat File In Excel VBA
In another post I demonstrated how to access a file on your computer using the MS Office Library. Here it is if you don’t know what I’m talking about. In this post, I am going to show you how to access the file and load it into your spreadsheet. I will do the same thing […]
What is the purpose of the Me keyword in Access VBA?
What does the Me keyword mean? “Me” refers to the Access form currently in focus. Instead of writing out the entire form reference, you can just use the keyword “Me” which is easier. Like: Me.txtbox = “I am a textbox on the form that currently has the focus.” or you can update a label’s caption […]
How To Exit A VBA Loop
Hi, there are times when you need to exit a loop after a certain condition has been met. How do you exit function in VBA? In the following example, you are going to see how to exit a function in VBA: Sub StartNumbers() Dim intNumber As Integer intNumber = ExitTest ‘the number is going to […]
How To Generate A XML File With Access VBA
XML is used to structure your data. You can send a CSV file to another person, but using XML, you can structure your data in a more elegant format, and get very specific about your fields, and what data is contained within your tags (your field names). This is different than a basic CSV file […]
Support these sponsors:


