Import A Tab-Delimited File Into Access Using New FileDialog Object
Office 2007 and later versions provide the new Microsoft Office 12.0 or Later Object Library which can be used to create File Picker Dialog boxes, simplifying the coding required.
Details on this technology can be viewed at:
In the following example, I illustrate the form which calls the FileDialog Picker, and then imports the tab-delimited file selected to a table.
Program Code
' ********************************************************** ' This Demonstrates A Form's Call To an Open File ' Dialog Box To Import A Tab-Delimited File ' ********************************************************** Option Compare Database Option Explicit Private Sub cmdImportStyleMaster_Click() ' ********************************************************** ' For Scripting Objects ' ********************************************************** Dim objFSO As Object Dim objTextStream As Object Dim strTextLine As String ' ********************************************************** ' For File Open Setup ' ********************************************************** Dim strTitle As String Dim strDescription() As String Dim strExtension() As String Dim strInputFileName As String ReDim strDescription(10) ReDim strExtension(10) ' ********************************************************** ' Prepare Parameters To Pass To The File Open Dialog ' ********************************************************** strTitle = "Import The Style Master" strDescription(0) = "Text Files" strExtension(0) = "*.txt" strDescription(1) = "All Files" strExtension(1) = "*.*" ' ********************************************************** ' Redimension the arrays to match the number of Extensions ' ********************************************************** ReDim Preserve strDescription(0 To 1) ReDim Preserve strExtension(0 To 1) ' ********************************************************** ' Get The File Name From The User Dialog Box ' ********************************************************** strInputFileName = cmdFileDialogPicker(strTitle, strDescription(), strExtension()) ' ********************************************************** ' If Null Then Exit ' ********************************************************** If strInputFileName = "" Then MsgBox ("You Clicked The Cancel Button") Exit Sub End If ' ********************************************************** ' Validate The Correct File Was Input ' ********************************************************** Set objFSO = CreateObject("Scripting.FileSystemObject") Set objTextStream = objFSO.OpenTextFile(strInputFileName) strTextLine = objTextStream.ReadLine If Left(strTextLine, 11) <> "style" & Chr(&H9) & "color" Then MsgBox ("The AIMS Inventory File Selected Does Not Match The Expected Format") objTextStream.Close Set objFSO = Nothing Set objTextStream = Nothing Exit Sub Else objTextStream.Close Set objFSO = Nothing Set objTextStream = Nothing End If ' ********************************************************** ' Prepare the table for import ' ********************************************************** DoCmd.SetWarnings False DoCmd.OpenQuery "qryDeleteStyleMasterImport", acViewNormal, acEdit DoCmd.SetWarnings True ' ********************************************************** ' Import the tab-delimited file to the target table ' ********************************************************** ' Note that the "StyleMasterIimportSpec" must be created ' by using the File, Get External Data tool and saving ' the import specification with that name. Creation ' of the import specification must be completed before ' attempting to do the DoCmd.TransferText procedure. ' ********************************************************** DoCmd.TransferText acImportDelim, "StyleMasterImportSpec", "tblStyleMasterImport", _ strInputFileName, True Exit Sub Handle_Error: MsgBox ("Error in Style Master - No Records Imported") MsgBox ("Error " & Err & ": " & Error(Err)) Application.Quit End Sub ' ********************************************************** ' This Is the File Picker (Open) Dialog Box Procedure ' ********************************************************** Option Compare Database Option Explicit Public Function cmdFileDialogPicker(strTitle As String, strDescription() As String, strExtension() As String) As String '********************************************************************* ' This Module Requires Including Microsoft OFFICE 12.0 Object Library '********************************************************************* Dim fDialog As Office.FileDialog Dim strFileSelected As String Dim i As Integer '**************************************************************** ' Instantiate the File Dialog Object '**************************************************************** Set fDialog = Application.FileDialog(msoFileDialogFilePicker) '**************************************************************** ' Set Up The File Dialog Parameters '**************************************************************** With fDialog .AllowMultiSelect = False .Title = strTitle .Filters.Clear For i = LBound(strDescription) To UBound(strDescription) .Filters.Add strDescription(i), strExtension(i) Next i '**************************************************************** ' Present the file picker dialog box '**************************************************************** If .Show = True Then strFileSelected = .SelectedItems(1) Else strFileSelected = "" End If End With '**************************************************************** ' Return The Full Path and File Name Selected '**************************************************************** cmdFileDialogPicker = strFileSelected End Function