【发布时间】:2013-04-30 13:21:47
【问题描述】:
加载到 MS Access 时,我需要跳过 CSV 文件的前三行。默认 CSV 导入不会删除前三行。我正在考虑编写一个宏来忽略前三行。
我的研究显示了 DoCmd 对象,但它的方法不适合删除前 x 行。
有什么想法吗?
【问题讨论】:
标签: ms-access vba ms-access-2010
加载到 MS Access 时,我需要跳过 CSV 文件的前三行。默认 CSV 导入不会删除前三行。我正在考虑编写一个宏来忽略前三行。
我的研究显示了 DoCmd 对象,但它的方法不适合删除前 x 行。
有什么想法吗?
【问题讨论】:
标签: ms-access vba ms-access-2010
DoCmd.TransferText method 将 SpecificationName 作为其参数之一。按照How to Create an Import Specification 的说明创建并保存导入规范。
现在进入访问选项、导航选项并显示隐藏/系统对象。您现在应该能够打开一个名为“mSysIMEXSpecs”的表。根据 SpecName 列查找您之前创建的导入规范。将该导入规范的“StartRow”列更改为 3(StartRow 从零开始)。
现在您应该可以使用 DoCmd.TransferText 方法传递您创建的导入规范的名称,它会跳过您的前三行。
【讨论】:
在 Access VBA 中,我将使用两个 TextStream 对象,一个到 .ReadLine 原始 CSV 文件逐行,另一个到 .WriteLine 到一个临时文件,跳过输入文件的前三行.在Scripting.FileSystemObject 上进行一些网络搜索,我相信您会找到一些示例代码。
然后我会使用DoCmd.TransferText acImportDelim 将临时文件导入Access。
【讨论】:
Docmd.TransferText 方法是一个不错的选择,但作为修改导入规范的替代方法,您可以考虑导入所有内容并在导入后进行一些验证。
因此,您可以导入整个文件,然后使用删除查询从表中删除数据。
正如上面评论中提到的,通过系统表修改规范对于其他人来说可能很棘手,因为在您的代码中带有漂亮的小评论的删除查询可能会奏效。如果需要使用它,如果不需要它可以被注释掉。
【讨论】: