3

加载到 MS Access 时,我需要跳过 CSV 文件的前三行。默认 CSV 导入不会删除前三行。我正在考虑编写一个宏来忽略前三行。

我的研究显示了 DoCmd 对象,但它的方法不适合删除前 x 行。

有什么想法吗?

4

3 回答 3

7

DoCmd.TransferText方法将 SpecificationName 作为其参数之一。按照如何创建导入规范中的说明创建和保存导入规范。

现在进入访问选项、导航选项并显示隐藏/系统对象。您现在应该能够打开一个名为“mSysIMEXSpecs”的表。根据 SpecName 列查找您之前创建的导入规范。将该导入规范的“StartRow”列更改为 3(StartRow 从零开始)。

现在您应该能够使用 DoCmd.TransferText 方法传递您创建的导入规范的名称,它将跳过您的前三行。

于 2013-04-30T14:01:43.183 回答
1

在 Access VBA 中,我将使用两个TextStream对象,一个.ReadLine逐行用于原始 CSV 文件,另一个用于.WriteLine临时文件,跳过输入文件的前三行。做一些网络搜索Scripting.FileSystemObject,我相信你会找到一些示例代码。

然后我会使用DoCmd.TransferText acImportDelim将临时文件导入 Access。

于 2013-04-30T13:57:37.030 回答
1

Docmd.TransferText 方法是一个不错的选择,但作为修改导入规范的替代方法,您可以考虑导入所有内容并在导入后进行一些验证。

因此,您可以导入整个文件,然后使用删除查询从表中删除数据。

正如上面的评论中提到的,通过系统表修改规范对于其他人来说可能很难找到哪里——因为在你的代码中带有一个很好的小评论的删除查询可能会奏效。如果需要使用它,如果不需要它可以被注释掉。

于 2013-04-30T15:01:11.727 回答