VBAを使用してタブ区切りのtxtファイルをAccessテーブルにインポートしようとしています。私のコードでは、まだ作成されていないテーブルに挿入したいと思います。
これが私がやろうとしたことです。注-これをCSVで機能させることができましたが、これは含まれていません:DataType:=xlDelimited, Tab:=True
Sub InsertData()
'import CSV into temp table
DoCmd.TransferText TransferType:=acLinkDelim, TableName:="tbl_TEMP", _
FileName:=FileNameVariable, HasFieldNames:=True, DataType:=xlDelimited, Tab:=True
End Sub
このブロックを実行すると、DataType:=xlDelimited, Tab:=True
で次のエラーが発生します。
コンパイルエラー:名前付き引数が見つかりません
タブ区切りのtxtファイルをプルして、txtの各列がAccessに独自の列を持つようにするには、これをどのように変更する必要がありますか?
このトピックに関する他の記事からわかるように、タブ区切りのテキストファイルをインポートする一般的な方法は実際にはありません。私が見た他のすべてのソリューションでは、タブ区切りのテキストファイルを一度インポートし、インポート仕様を保存してから、そのインポート仕様を後続のすべてのインポートに使用する必要があると述べています。別のタブ区切りファイルをインポートする場合、仕様が一致しない可能性があるという問題があります。
私がそれを一般的に行うことがわかった唯一の方法(FileSystemObject
、Split(s, vbTab)
などを使用して「独自の」コードをロールする以外)は、可能なすべての255の完全に一般的な仕様を作成することですフィールドとそれを使用します。次のように1回限りのセットアップが必要です。
Pastebin here からCSVデータをコピーし、お気に入りのテキストエディターに貼り付けて、GenericTabSpecification.csv
として保存します。
そのファイルをExcelで開き、256行4列すべてを選択して、 Ctrl+C コピーする。
Accessで、テキストファイルのインポートウィザードを開始し、タブ区切りファイルを選択します。 (実際にはインポートしません。)
ウィザードの最初のページが表示されたら、[詳細...]ボタンをクリックします。
[仕様のインポート]ダイアログで、設定(フィールド区切り文字、テキスト修飾子など)を確認し、[フィールド情報]グリッドの左上隅をクリックして、すべての行を選択します。
ヒット Ctrl+V Excelからグリッドにデータを貼り付けます。これで、グリッドに255行が含まれるはずです。
[名前を付けて保存...]ボタンをクリックし、仕様にGenericTabSpecification
という名前を付けます。それが完了したら、ウィザードをキャンセルします。
これで、次のようなステートメントを使用して、VBAから一般的なインポートを実行できます。
DoCmd.TransferText _
TransferType:=acImportDelim, _
SpecificationName:="GenericTabSpecification", _
TableName:="newTable", _
FileName:="C:\Users\Gord\Desktop\foo.txt", _
HasFieldNames:=False