Access 2016导入多CSV至单表失败:生成多表而非写入UKR表
问题分析与解决方案:Access批量导入CSV到指定表而非新建表
嘿,我一眼就找到问题所在了——你在循环里不小心把目标表名给覆盖了!
你一开始明明定义了要将所有CSV导入到预先创建的UKR表,但在Do循环里写了这行代码:
strTable = Left(strFile, Len(strFile) - 4)
这会把每次导入的目标表名改成当前CSV文件的名字(去掉.csv后缀),所以Access才会为每个CSV单独创建新表,完全忽略了你最初指定的UKR表。
修改后的正确代码
只需要删掉那行覆盖表名的代码,让strTable始终指向你预先创建的UKR表即可:
Option Compare Database Option Explicit Function DoImport() Dim strPathFile As String Dim strFile As String Dim strPath As String Dim strTable As String Dim blnHasFieldNames As Boolean blnHasFieldNames = True strPath = "C:\UKR\" strTable = "UKR" ' 固定指向预先创建的目标表 strFile = Dir(strPath & "*.csv") Do While Len(strFile) > 0 strPathFile = strPath & strFile ' 直接使用固定的strTable参数 DoCmd.TransferText acImportDelim, , strTable, strPathFile, blnHasFieldNames strFile = Dir() Loop MsgBox "done" End Function
额外注意事项
- 请确认你预先创建的
UKR表的字段名,和CSV文件的表头完全匹配(因为你设置了blnHasFieldNames = True,Access会通过表头匹配对应字段);如果你的CSV没有表头,记得把这个参数改成False,同时保证CSV的字段顺序和UKR表的字段顺序完全一致。 - 确保CSV中的数据类型和
UKR表对应字段的类型兼容(比如数字字段不要导入文本内容),否则可能会出现导入报错或数据丢失的情况。
内容的提问来源于stack exchange,提问作者rob
相关产品推荐
相关产品推荐

