web-dev-qa-db-ja.com

タブ区切りのtxtをVBAを使用してAccessテーブルにインポートします

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に独自の列を持つようにするには、これをどのように変更する必要がありますか?

5
sion_corn

このトピックに関する他の記事からわかるように、タブ区切りのテキストファイルをインポートする一般的な方法は実際にはありません。私が見た他のすべてのソリューションでは、タブ区切りのテキストファイルを一度インポートし、インポート仕様を保存してから、そのインポート仕様を後続のすべてのインポートに使用する必要があると述べています。別のタブ区切りファイルをインポートする場合、仕様が一致しない可能性があるという問題があります。

私がそれを一般的に行うことがわかった唯一の方法(FileSystemObjectSplit(s, vbTab)などを使用して「独自の」コードをロールする以外)は、可能なすべての255の完全に一般的な仕様を作成することですフィールドとそれを使用します。次のように1回限りのセットアップが必要です。

Pastebin here からCSVデータをコピーし、お気に入りのテキストエディターに貼り付けて、GenericTabSpecification.csvとして保存します。

そのファイルをExcelで開き、256行4列すべてを選択して、 Ctrl+C コピーする。

Accessで、テキストファイルのインポートウィザードを開始し、タブ区切りファイルを選択します。 (実際にはインポートしません。)

Import1.png

ウィザードの最初のページが表示されたら、[詳細...]ボタンをクリックします。

[仕様のインポート]ダイアログで、設定(フィールド区切り文字、テキスト修飾子など)を確認し、[フィールド情報]グリッドの左上隅をクリックして、すべての行を選択します。

Import2.png

ヒット Ctrl+V Excelからグリッドにデータを貼り付けます。これで、グリッドに255行が含まれるはずです。

Import3.png

[名前を付けて保存...]ボタンをクリックし、仕様にGenericTabSpecificationという名前を付けます。それが完了したら、ウィザードをキャンセルします。

これで、次のようなステートメントを使用して、VBAから一般的なインポートを実行できます。

DoCmd.TransferText _
        TransferType:=acImportDelim, _
        SpecificationName:="GenericTabSpecification", _
        TableName:="newTable", _
        FileName:="C:\Users\Gord\Desktop\foo.txt", _
        HasFieldNames:=False
11
Gord Thompson