使用 MS Access 导入多个文本文件

Using MS Access to import multiple text files

我有大约 600 个带有 headers 的文本文件,我真的不想将它们一个一个地手动导入到 MS Access 中。

我不想将文本文件附加到一个 Access table。如果我有 600 个文本文件,我希望结果为 600 Access tables。

我为此四处搜索,最接近的是一些代码,可以获取我的文本文件并将它们附加到一个访问中 table。我不想要那个。

我的印象是您需要将流程分为三个步骤

第一个将文本导入 table 的代码 http://www.datawright.com.au/access_resources/access_import_text_files.htm

每个文本都被导入到临时 tables... 然后检查 table 字段

创建 tables 的第二个代码 http://www.access-programmers.co.uk/forums/showthread.php?t=213261

第三次擦除 temp table 的内容并继续下一个文本...或者当您导入它们时,您可以在 temp table 中添加信息...例如文本名称并处理它们之后分批

考虑一个 For/Loop VBA 使用 DoCmd.TransferText 命令遍历文件夹目录中的所有文本文件并导入它们的后缀表示 1-600。

Dim FSO as Object, objFolder As Object, objFile as Object

Set FSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = FSO.GetFolder("C:\Path\To\TextFiles")

i = 1
For each objFile in objFolder.Files
  If Right(objFile.Name, 3) = "txt" Then
    DoCmd.TransferText acImportDelim, , "File_" & i, objFolder & "\" & objFile.Name, True
  End if
  i = i + 1
Next objFile

Set objFile = Nothing
Set objFolder = Nothing
Set FSO = Nothing

在 TransferText 的空参数中,您可以使用在文本文件的一次手动导入过程中创建的预定义规范对象。这允许您为导入的文本文件命名字段、定义数据类型等。

最后,如果所有文件的结构都相同,请考虑再次导入一个 table 并根据相关字段使用查询在 600 个分组中拆分(如果需要)。要使用 table,只需将上面的 "File_" & i 参数替换为 table 字符串名称:"dataFiles"。您可以节省 table 个命名空间,减少数据库对象的存储,总体上有助于更好的组织和关系模型。

我就是这样做的。

Option Compare Database

Private Sub Command0_Click()

        Dim strPathFile As String, strFile As String, strPath As String
        Dim strTable As String
        Dim blnHasFieldNames As Boolean

        blnHasFieldNames = True

        strPath = "C:\Users\ryans\OneDrive\Desktop\test\"

        strTable = "Table1"

        strFile = Dir(strPath & "*.txt")
        Do While Len(strFile) > 0
              strPathFile = strPath & strFile
              DoCmd.TransferText acImportDelim, _
                TableName:="Test1", _
                FileName:=strPath & strFile, _
                HasFieldNames:=True
              strFile = Dir()
        Loop


End Sub