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