5

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

4

1 に答える 1

12

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

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

こちらの Pastebin から 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
于 2013-11-13T21:07:05.093 に答える