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
' **********************************************************
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
