MS Access に読み込むときに、CSV ファイルの最初の 3 行をスキップする必要があります。デフォルトの CSV インポートでは、最初の 3 行は削除されません。最初の 3 行を無視するマクロを作成しようと考えています。
私の調査では DoCmd オブジェクトが示されましたが、そのメソッドは最初の x 行を削除することには対応していません。
何かご意見は?
MS Access に読み込むときに、CSV ファイルの最初の 3 行をスキップする必要があります。デフォルトの CSV インポートでは、最初の 3 行は削除されません。最初の 3 行を無視するマクロを作成しようと考えています。
私の調査では DoCmd オブジェクトが示されましたが、そのメソッドは最初の x 行を削除することには対応していません。
何かご意見は?
このDoCmd.TransferText
メソッドは、その引数の 1 つとして SpecificationName を取ります。インポート仕様の作成方法の手順に従って、インポート仕様を作成して保存します。
Access Options、Navigation Options に移動し、非表示/システム オブジェクトを表示します。これで、「mSysIMEXSpecs」という名前のテーブルを開くことができるはずです。SpecName 列に基づいて、前に作成したインポート仕様を見つけます。そのインポート仕様の「StartRow」列を 3 に変更します (StartRow はゼロベースです)。
これで、作成したインポート仕様の名前を渡す DoCmd.TransferText メソッドを使用できるようになり、最初の 3 行がスキップされます。
Docmd.TransferText メソッドは適切なオプションですが、インポート仕様を変更する代わりに、すべてをインポートし、インポート後に検証を行うことを検討できます。
したがって、ファイル全体をインポートしてから、削除クエリを使用してテーブルからデータを削除できます。
上記のコメントで述べたように、システム テーブルを介して仕様を変更すると、他の誰かがどこを見つけるのが難しくなる可能性があります. 必要な場合は使用し、そうでない場合はコメントアウトできます。
Access VBA では、2 つのTextStream
オブジェクトを使用します。1 つ.ReadLine
は元の CSV ファイルを 1 行ずつ、もう 1 つ.WriteLine
は一時ファイルを対象とし、入力ファイルの最初の 3 行をスキップします。でいくつかの Web 検索を行うScripting.FileSystemObject
と、このためのサンプル コードが見つかるはずです。
次にDoCmd.TransferText acImportDelim
、一時ファイルを Access にインポートします。