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