使用 VBA 将多个 TXT 导入最后一列时访问添加文件名

Posted

技术标签:

【中文标题】使用 VBA 将多个 TXT 导入最后一列时访问添加文件名【英文标题】:Access add filename while importing multiple TXT to last column using VBA 【发布时间】:2020-07-13 13:47:38 【问题描述】:

我目前有一个使用访问规范导入文件夹中所有文件的宏。我想在 Access 表的末尾添加一列,其中包含每个导入的 .txt 文件的文件名。到目前为止,这是我的代码。如何完成?

Sub cmdImport_Click()
    Dim strPath As String
    Dim strFile As String
    Dim strTable As String
    Dim strSpecification As String
    Dim intImportType As AcTextTransferType
    Dim blnHasFieldNames As Boolean

    strTable = "Reconstrucción"
    strSpecification = "Reconstruir"
    blnHasFieldNames = False
    intImportType = acImportDelim

    ' Permite al usuario elegir una carpeta
    With Application.FileDialog(4)
        If .Show Then
            strPath = .SelectedItems(1)
        Else
            MsgBox "No seleccionó una carpeta", vbExclamation
            Exit Sub
        End If
    End With
    If Right(strPath, 1) <> "\" Then
        strPath = strPath & "\"
    End If

    DoCmd.OpenForm "frmMessage"
    Forms!frmMessage.Repaint

    ' Loop a través de los archivos de texto
    strFile = Dir(strPath & "*.txt")
    Do While strFile <> ""
        ' Importa los archivos de texto de la carpeta
        DoCmd.TransferText _
            TransferType:=acImportFixed, _
            SpecificationName:=strSpecification, _
            TableName:=strTable, _
            FileName:=strPath & strFile, _
            HasFieldNames:=blnHasFieldNames
        strFile = Dir
    Loop

    DoCmd.Close acForm, "frmMessage"
End Sub

【问题讨论】:

【参考方案1】:

只需在“Reconstrucción”表中创建一个名为 FileName 的字段,并将下面的代码添加为循环的最后一行:

docmd.runsql "UPDATE " & strTable & " SET FileName = '" & strFile & "' WHERE strFile ISNULL;"

【讨论】:

操作查询应使用CurrentDb().Execute 运行。然后,您不必打开/关闭警告。 您确定要在每个循环中添加 same 列吗? Kostas K. 对于我从问题中理解的内容,是的,必须添加相同的列名,因为每个文件都有不同的表名。我错过了什么吗? 只有一张桌子,strTable

以上是关于使用 VBA 将多个 TXT 导入最后一列时访问添加文件名的主要内容,如果未能解决你的问题,请参考以下文章

ms 访问 - 当我在 vba 中选择查询时,列为空

导入多个文本文件 Excel VBA

从多个TXt文件导入数据到excel中,如何修改VBA代码,选取不同的文件

将数据从 Excel 文件导入 MSAccess 格式化 VBA 中的每一列

如何用VBA将EXCEL中的若干的数据导入不同的word文档

VBA 将多个超链接添加到一个 Powerpoint 文本框