引用:
1行目はヘッダーなので取り込まないようにしようとしているのですが、
HasFieldNamesでFalseを指定しているのですが、ヘッダーが取り込まれます。
DoCmd.TransferText メソッド (Access)
https://docs.microsoft.com/ja-jp/office/vba/api/access.docmd.transfertext
HasFieldNames
引用:
インポート、エクスポート、またはリンクするときにフィールド名としてテキスト ファイルの最初の行を使用するには、True (1) を使用します。 テキスト ファイルの最初の行を通常のデータとして扱うには、False (0) を使用します。 この引数を空白にすると、既定値 (False) と見なされます。 Microsoft Word の宛名の差し込みデータ ファイルの場合は、この引数は無視され、最初の行には常にフィールド名が含まれます。
判りづらいかも知れませんが、
ファイルの最初の行にヘッダーが含まれている場合に
True を指定すると、最初の行を フィールド名 と見立ててインポートを行います。
False を指定すると、最初の行も データ と見立ててインポートを行おうとします。
この場合、通常はフィールド名は文字列型になりますよね?
フィールドのデータ型が 数値型 の場合、文字列を入れようとしますからエラーとなり
別にエラーテーブルが生成され、その行のデータが取り込めなかった事が記録されます。
フィールドのデータ型が 文字列型 の場合は、エラーとはなりませんが、
ヘッダーがデータとして インポートされる事になります
ですので、ヘッダーがデータとして取り込まれる結果となります。
ヘッダーを 読み込まない目的で指定するのではありません。
引用:
ヘッダーにブランク行があり、ヘッダー有で取り込むとヘッダー部分の
取込エラーとなり、ヘッダー無しで取り込みがしたいというのが目的に
なります。
ヘッダーはフィールド名ではない と言う事でしょうか?
ブランク行 とは何でしょうか?
半角スペース で埋まっている行 なのでしょうか?
理解できていませんが、『とにかく1行目を取り込みたくない』 と言う話なら
私なら、1行目除いたファイルを別に生成し、そちらを取り込みます。
よろずやさんのおっしゃる様に、エラーテーブルを無視すれば問題ないのでしょうが、
処理を複数繰り返す場合、
・エラーテーブルが増え続ける事となり、エラーテーブルの内容を確認しなくなる可能性が高くなり
ヘッダー以外の問題で取り込めない問題が発生した場合に気づきにくい
・エラーテーブルを都度削除する様にVBAで組む事は オブジェクトを頻繁に変更する事になり
ファイル破損の可能性が高くなると思っているので避けたい
なので、私が 定常的に処理するのであれば、事前に1行目を除く処理を組み込みます。
簡単なのは、
for /f "skip=1" %%i in ('type C:\TEST.txt') do @echo %%i >> C:\New_TEST.txt
の様なバッチファイルにて処理するのですが、
バッチとの処理が終わらないうちにインポートが進まない様にする必要があります。
(APIを使って、バッチ終了まで待機の方法もあります そちらは ご自身で検索してみてください)
VBAのみでファイルを開き別ファイルを生成の方が難易度は低いでしょう。
https://www.moug.net/tech/acvba/0090005.html
https://www.moug.net/tech/exvba/0060089.html
https://www.moug.net/tech/exvba/0060086.html
あたりが参考になるでしょう。
VBAによる固定長CSVファイル取込方法について
https://www.moug.net/faq/viewtopic.php?t=80276
にておっしゃっていた、ユーザー定義型 を使用する 前段のファイル読み取りの処理です。