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

时间:2015-05-20 17:21:32

标签: vba ms-access access-vba text-files ms-access-2013

我有大约600个带标题的文本文件,我真的不想将它们逐个手动导入MS Access。

我不想将文本文件附加到一个Access表中。如果我有600个文本文件,我希望结果是600个访问表。

我为此搜索了高低,我最接近的是一些代码,它将获取我的文本文件并将它们附加到一个访问表中。我不希望这样。

2 个答案:

答案 0 :(得分:5)

使用DoCmd.TransferText命令考虑For / Loop VBA,该命令遍历文件夹目录中的所有文本文件,并使用后缀导入它们以表示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的空参数中,您可以使用在手动导入文本文件期间创建的预定义规范对象。这允许您为导入的文本文件命名字段,定义数据类型等。

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

答案 1 :(得分:0)

我认为你需要分三个步骤打破这个过程

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

每个文本都会导入临时表... 然后检查表字段

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

第3次删除临时表的内容并继续下一个文本...或者当你导入它们时,你可以在临时表中添加信息......比如文本名称,然后批量处理它们