数据、数据、数据——没有数据,数据库几乎毫无用处。因此,当需要将数据导入 Access 表时,最常见的问题之一就是:如何才能更轻松地定期导入大量文件?由于这是一项非常常见的任务,显然有很多方法可以解决这个问题,但在这里,我们将只介绍其中一种方法——在我看来是最简单的——尤其适合定期或按计划执行此操作的情况。只需稍加规划(我指的是真的只需要一点点!),再加上一点 VBA 技巧,一切就准备就绪——继续阅读,开始吧……
导入文件夹中的所有 Excel 文件
对于本文,我们将着眼于在给定文件夹中导入多个 Excel 文件,但您也可以轻松地导入 csv 文件等——我们将很快讨论如何更改代码以处理 csv 文件。
首先,让我们定义我们希望代码做什么:
“我们想将给定文件夹中的所有文件导入现有表格——我们还想指定文件是否有标题行”
看起来很简单,所以让我们看一下执行此操作的代码:
Sub ImportfromPath(path As String, intoTable As String, hasHeader As Boolean) Dim fileName As String 'Loop through the folder & import each file fileName = Dir(path & "\*.xls") While fileName <> "" DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, intoTable, path & fileName, hasHeader 'check whether there are any more files to import fileName = Dir() Wend End Sub
检查问题...

好的 - 首先是第一件事。 为了使代码尽可能在不同情况下可用,我们要求提供路径名(文件存储位置)、要将这些文件导入到的表的名称,以及此文件夹中的文件是否都有一个是否标头(即字段名称是否出现在电子表格的第一行)。
您会注意到搜索文件的代码部分 - Dir(path & “\*.xls”) - 将通配符和文件扩展名附加到提供的路径。 我提到这一点是因为如果您只想导入与特定命名约定匹配的文件(例如,所有文件名中包含“January”或“2017”的文件),那么更改代码将非常容易). 如果愿意,您甚至可以将该过滤器作为参数添加到子例程调用中。
无论如何,如果文件符合给定条件(在本例中使用文件夹中的任何“.xls”文件),它会立即尝试使用 TransferSpreadsheet 命令导入该文件。
在哪里更改代码以满足您的需要……
在这一点上,您可以更改代码,而不是导入电子表格,而是导入 csv 文件(使用“TransferText”命令)等
然后代码循环,直到该文件夹中没有要导入的文件为止。
这是一小段代码,但我敢肯定,您会发现自己会一遍又一遍地使用它!
作者简介:
Mitchell Pond 是一位数据恢复专家 DataNumen, Inc.,它是数据恢复技术领域的世界领先者,包括 修复 SQL 损坏 和 excel 恢复软件产品。 欲了解更多信息,请访问 datanumen.com