2013-02-25 22 views
6

すべて同じ(既知の)レイアウトを持つ新しいtxtファイルの追加を自動化しようとしています。VBAを使用して区切り文字でテキストをインポートする

カラムは、タブ(タブ)を使用して区切られています。テキストファイルをインポートするためのアクセスウィザードのようなVBAでこれを行うことは可能ですか?

私はあなたがあなたの仕様ファイルを作成するために、一度、ウィザードを通過する必要がありますVBA

+0

最も簡単な方法をされて、あなたのマクロを記録しますそれをExcelやAccessなどで手動で行い、生成されたVBAを取得し、入力パラメータなどのために汎用化してください。 –

+0

@JonEgerton Accessでマクロを記録することはできません。 – Brad

+0

いいえ、Excelではそうすることができます。生成されたVBをコードに再利用する必要があります。オブジェクトモデルは使用可能になります(正しい参照を引き出す限り)。 –

答えて

11

DoCmd.TransferText方法を使用しています。これを行うには、通常のようにテキストファイルをインポートしますが、ウィザードの最後には、 "Advanced ..."ボタンをクリックしてください。ここでspecファイルを作成します。

enter image description here

これらの列は、入力ファイル、データ型とすべてに一致LLください。フィールド区切り文字と適切なテキスト修飾子を使用している場合は、必ず{tab}を選択してください。

enter image description here

今、あなたはこの

のようにVBAで使用することができます(この後の同じ画面に戻って来て、あなたの古いものの上に保存し、その後 Specs...をクリックすることで編集することができた)

をあなたのスペックを保存

DoCmd.TransferText acImportDelim, "your spec name", "destination table name", sourceFilePath 

ファイルに基づいてtrueまたはfalseであるかどうかを判断する必要があるパラメータHasFieldNamesがあります。

+1

技術的には、より新しいインポート/エクスポートプロファイルAPIを使用して、独自のI/O仕様をXMLからアセンブルすることもできます。それは難しいことですが、可能です - 前に自分でやったことがあります。[ImportExportSpecification](http://msdn.microsoft.com/en-us/library/ff820988.aspx)、[新しいインポート/エクスポート仕様OM](http://blogs.msdn.com/b/thirdoffive/)を参照してください。アーカイブ/ 2006/10/12/the-new-import-export-specification-om.aspx)、[New Import/Export Specification UI](http://blogs.msdn.com/b/thirdoffive/archive/2006/10/17/the-new-import-export-specifications-ui.aspx) –

+0

@JoshuaHonig自分で作ることの利点は何ですか?この方法よりもマッピングが「良い」のですか?これはかなり迅速なプロセスですか? – Brad

+0

実行時に仕様を作成できます。場合によっては、特にアプリケーションが他の人に配布されている場合は必要です。 –

2

インポートウィザードでは、ファイル形式のわずかな変更でも、すべての手順をクリックする必要がありますもう一度インポートを有効にするには、

@ Remouの答えをms Access import table from file in a queryでチェックして、SQLで直接行う方法については、私は実際に私のプロジェクトで同じ方法を使用しています。私はこのようなものを使用しています(詳細については、私のリンクを参照してください)。

insert into MyTable (column-list...) 
select (column-list...) 
from [data-source-specifications].[file-name] 
any-other-clauses...; 

ただ1つの警告。このSQL構文を通常のAccessクエリオブジェクトに入れると、Accessがクエリオブジェクトを開くことさえできないほどの困難を乗り越える可能性があります。だから作成し、Accessで試している間にテキストファイルにクエリを保存します。クエリをテストし、作業されるとアクセスがそのまま正確にそれを実行するように、そのように、VBAサブルーチンに保存します。プロセスのこの種を開始する

sub MyTableImport() 
    sqlStr = "   insert into MyTable (column-list) " ' leave a space at the 
    sqlStr = sqlStr & "select (column-list...) " ' end of each line of the string 
    sqlStr = sqlStr & "from [data-source-specifications].[file-name] " 
    sqlStr = sqlStr & "any-other-clauses... ;" 

    DoCmd.RunSQL sqlStr 
end sub 
関連する問題