3

MS Access に読み込むときに、CSV ファイルの最初の 3 行をスキップする必要があります。デフォルトの CSV インポートでは、最初の 3 行は削除されません。最初の 3 行を無視するマクロを作成しようと考えています。

私の調査では DoCmd オブジェクトが示されましたが、そのメソッドは最初の x 行を削除することには対応していません。

何かご意見は?

4

3 に答える 3

7

このDoCmd.TransferTextメソッドは、その引数の 1 つとして SpecificationName を取ります。インポート仕様の作成方法の手順に従って、インポート仕様を作成して保存します。

Access Options、Navigation Options に移動し、非表示/システム オブジェクトを表示します。これで、「mSysIMEXSpecs」という名前のテーブルを開くことができるはずです。SpecName 列に基づいて、前に作成したインポート仕様を見つけます。そのインポート仕様の「StartRow」列を 3 に変更します (StartRow はゼロベースです)。

これで、作成したインポート仕様の名前を渡す DoCmd.TransferText メソッドを使用できるようになり、最初の 3 行がスキップされます。

于 2013-04-30T14:01:43.183 に答える
1

Docmd.TransferText メソッドは適切なオプションですが、インポート仕様を変更する代わりに、すべてをインポートし、インポート後に検証を行うことを検討できます。

したがって、ファイル全体をインポートしてから、削除クエリを使用してテーブルからデータを削除できます。

上記のコメントで述べたように、システム テーブルを介して仕様を変更すると、他の誰かがどこを見つけるのが難しくなる可能性があります. 必要な場合は使用し、そうでない場合はコメントアウトできます。

于 2013-04-30T15:01:11.727 に答える
1

Access VBA では、2 つのTextStreamオブジェクトを使用します。1 つ.ReadLineは元の CSV ファイルを 1 行ずつ、もう 1 つ.WriteLineは一時ファイルを対象とし、入力ファイルの最初の 3 行をスキップします。でいくつかの Web 検索を行うScripting.FileSystemObjectと、このためのサンプル コードが見つかるはずです。

次にDoCmd.TransferText acImportDelim、一時ファイルを Access にインポートします。

于 2013-04-30T13:57:37.030 に答える