• 締切済み

アクセス 複数のテキストファイルインポートについて

アクセス VBAについてです。 DoCmd.TransferTextで複数のテキストファイル(同一フォルダの中、上から順に全て)を取り込み、 テーブル名を一つ一つ順番につけていくことは可能でしょうか?? 例 フォルダダイアログを作ってそのフォルダを指定して フォルダ名をテキストボックスに表示、 その表示されてるフォルダの中身を 別のボタンを押せばインポートできるように、 テキストファイル A1 A2 A3 A4 インポート後のテーブル名 B1 B2 B3 B4 インポート時の定義は全て同一です。 わかりにくくてすみません、 知恵を貸してください

みんなの回答

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.2

#1です。「インポート操作の保存」を用いる方法も調べてみました。入力、出力共に固定になってしまうので面倒です。ここでは、temp.csvというファイルをTempTableというテーブルにインポートする操作を保存して転用してみました。取り込むファイルをtemp.csvにコピーし、取り込んだTempTableの名前を付け替えと面倒なことになっています。もっと良い方法をご存じの方は教えて下さい。 Sub test2() Dim i As Long For i = 1 To 3 FileCopy GetDesktopPath & "\test" & CStr(i) & ".csv", "temp.csv" DoCmd.RunSavedImportExport "インポートtemp" DoCmd.Rename "Table" & CStr(i), acTable, "TempTable" Next i End Sub Private Function GetDesktopPath() As String Dim wScriptHost As Object, strInitDir As String Set wScriptHost = CreateObject("Wscript.Shell") GetDesktopPath = wScriptHost.SpecialFolders("Desktop") Set wScriptHost = Nothing End Function

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

可能でしょうか?? と訊かれれば、「やる気があれば可能です。」というのが答えです。 回答では無いのですがAccess2010で今更ながら?発見があったのでご披露しておきます。 下記コードは「インポート操作の保存」で保存した操作に対しては無効な様です。 インポートウィザードの途中で、旧バージョン同様設定ボタンをクリックして保存したインポート定義に対しては有効でした。 下記で、table1と、test1.csvのところをループを回しながら変更していけばお望みの事ができます。なお、GetDesktopPathはデスクトップのパスを求める自作(というか方々で親切な方が教えてくれている)関数です。 Sub test() DoCmd.TransferText acImportDelim, "import_test", "table1", GetDesktopPath & "\test1.csv" End Sub 下記のQAもご参考になるかもしれません。但しインポート定義は使用せず空になっています。 http://okwave.jp/qa/q8616853.html

hiko0626
質問者

お礼

返信ありがとうございます。 いろいろ参考にしながら頑張りたいと思います。 またよろしくお願いします。

関連するQ&A

  • Access2000のCSVファイルのインポートについて

    Access2000でCSVファイルをインポートしようと思っています。 インポート方法は、VBAで 「DoCmd.TransferText acImportDelim, , "テーブル名", "ファイル名"」を使用しています。 この時に、CSVファイルが次のようなデータです。 F1,F2,F3 0010,0200,0001A12 0011,0201,0021B12 (実際は、1000件近いデータです) これをインポートすると、 F1,F2,F3 10,200,1A12 11,201,21B12 となってしまいます。 頭の「0」を省きたくないのです。 文字列として取り込めないでしょうか? CSVのデータに""を自動でつける方法はないでしょうか? Accessの外部データの取り込みを使うと、文字列として指定できるのですが、VBAを使いワンクリックでデータを取り込もうとしています。 よろしくお願いします。

  • MS AccessでExcelファイルのインポートは?

    AccessのVBAでExcelファイルをインポートするにはどうすればいいのでしょうか? ちなみに DoCmd.TransferText acImportDelim, , "Tmp名簿", strInPutPath & "\名簿.csv", True (strInPutPathは、ダイアログから取得したパスです) では、CSVファイル(TXTファイル)しか読み込めません。 (もちろん、そのため拡張子が「.csv」にしていますが 読み込むファイルをテキストファイルにしたら「.txt」でもいいです) 「ファイル」メニュー(コマンド)の「外部データの取り込み」→「インポート」では、Excelファイルも読み込めるので悔しいです。 これをVBAでやりたいんですが。 よろしくお願いいたします。

  • Access VBAでファイルのインポートについて

    あるディレクトリにAccessのmdbファイルを置き、「インポート」フォルダを隣に置きます。 このフォルダ内にCSVファイルを置き、それをVBAでテーブル「tbl_import」にインポートさせたいのです。 ちなみにインポート後はディレクトリ「インポート」下層のディレクトリ「インポート済」に移動させたいのです。 下記例文では「file.csv」と書いていますが、このファイル名はインポートの都度、常に変わります。 インポートさせるファイルは常に一つです。 「*」を用いれば出来ると思っていたのですが、うまくいきません。 良い方法を教示いただけませんか。 DoCmd.RunSQL "DELETE * FROM tbl_import" DoCmd.TransferText acImportDelim, "インポート定義", "tbl_import", CurrentProject.Path & "\インポート\file.csv", True FileCopy CurrentProject.Path & "\インポート\file.csv", CurrentProject.Path & "\インポート\インポート済\file.csv" Kill CurrentProject.Path & "\インポート\file.csv"

  • ACCESS TAB区切りのテキストのインポート

    お世話になります。 ACCESS TAB区切りのテキストファイルのインポートができません。 タブ区切りのテキストファイルを 外部データ⇒テキストファイル‥‥と進めばインポートできるのですが DoCmd.TransferText acImportDelim, , "カテゴリ", "D:\okwave\テキスト\カテゴリ.txt", True では 実行時エラー '2391' 貼り付け先の'カテゴリ'には'カテゴリコードカテゴリー名親カテゴリ成分フラグ階層'フィールドがありません となります。 このテキストファイルを以下のようにカンマ区切りにするとインポートされます。 ------------------------------------------------------ カテゴリコード,カテゴリー名,親カテゴリ,成分フラグ,階層 01,化粧品,01,0,0 ----------------------------------------------------- インポートしたテーブル DoCmd.TransferText acExportDelim, , "カテゴリ", "D:\okwave\テキスト\カテゴリ.txt", True でエキスポートすると次のように変化しています。 -------------------------------------------------- "カテゴリコード","カテゴリー名","親カテゴリ","成分フラグ","階層" "01","化粧品","01",0,0 --------------------------------------------------------------- PCは Windows7,Access2010 です。 よろしくお願いいたします。

  • 複数のCSVファイルのAccessテーブルへの連続インポートについて

    特定のフォルダにある形式は同じでファイル名の異なる複数のcsvファイルをAccessの特定のテーブルに自動で次々にインポートして1つのテーブルを作成したいのですが、今回の作業をするに当たりVBAに関するの本をはじめて読んだ程度の知識です。 本あるいはこの「教えて」を読んで、TransferTextを使い、Loop~Doでやればよいのかなと思うのですがうまくいきません。 すみませんが教えていただけたらうれしいです。Access2000を使っています。

  • ACCESSからテキストファイルへのエクスポート

    ACCESS2002でVBAを使ってテキストファイルにエクスポートしようとすると 次のようなエラーが出てしまいます。 「予期せぬエラー #3027が発生しました。 データベースまたはオブジェクトは読み取り専用なので更新できません。」 これを回避するにはどうしたらいいのでしょうか。 ちなみにVBAの記述は DoCmd.TransferText acExportDelim, "", "抽出クエリ", "a:\nk100.txt" , False, ""という記述です。

  • VBAでCSVファイルをインポートする方法について

    VBAでCSVファイルをインポートする方法について OS:ウィンドウズXP Access Version:2000 AccessVBAでcsvファイルをインポートするマクロを作っています。 現在、インポート定義を利用して、データ型を指定したインポートができているのですが、1点だけ問題があり、質問します。 インポートするcsvファイルのA列にIDが入力されています。 そのA列の末尾に、ID(数値型)ではない「<b>32</b><br />」という値が入っています。 Accessのテーブルでは、このIDのフィールドは数値型で管理している為、この1レコードだけ エラーとなり、エラーテーブルが作られ、また、インポート先のテーブルには空のレコードができてしまいます。 この末尾の行については、IDではない「<b>32</b><br />」以外は何もデータが入っていない為、 インポートする必要がありません。 もし可能であれば、csvファイルのA列(Accessテーブルでは数値型のIDというフィールド)が数値ではない場合、 その行のインポートをスキップするような処理がVBAで作成できるとよいのですが、可能でしたら教えてもらえないでしょうか。 ※以下はVBAを作成する為に仮に用意し、読込を行っているcsvファイルと、VBAソースになります。 ○csvファイル名:インポート用csvファイル.csv 内容: ID,テキスト1,テキスト2,テキスト3,テキスト4,メモ1,メモ2, 1,a,A,z,Z,あ,ん, 2,b,B,y,Y,い,を, 3,c,C,x,X,う,わ, 4,d,D,w,W,え,ろ, 5,e,E,v,V,お,れ, 6,f,F,u,U,か,る, 7,g,G,t,T,き,り, 8,h,H,s,S,く,ら, 9,i,I,r,R,け,よ, 10,j,J,q,Q,こ,ゆ, <b>32</b><br />,,,,,, ○VBAソース Dim FN As String Dim Res As Integer WizHook.Key = 51488399 Res = WizHook.GetFileName(0, "", "", "", FN, "", _ "csvファイル(*.csv)|*.csv", 0, 0, 4, True) WizHook.Key = 0 If Res = 0 Then DoCmd.TransferText , "csvインポート定義", "インポートテーブル", FN MsgBox "csvファイルをインポートしました", vbOKOnly End If

  • Excelマクロ/ファイル名を指定してインポート

    テキストファイルからExcelへインポートする作業を自動化させたいのですが。 毎回インポート元のファイル名(格納しているフォルダは同じです)が異なるので、マクロ記録ではうまく作成できません。VBAでないと無理でしょうか? できればファイル名をその都度入力するようなダイアログボックスが表示されれば理想的です。VBA初心者なので教えてください。

  • ACCESS2013で複数ファイルのインポート

    お世話になっております。 環境は windows7 ACCESS2013 ACCESS2013を使って特定フォルダにある、AAA1.csv AAA2.csv・・・・とファイル名下一桁が連番になっているデータをACCESS2013のT_AAAという名前のテーブルにインポートをさせたいです。 テーブルのフィールド名やデータ型はどのファイルも同一です。 色々とネットで検索したのですが、あまりに初心者レベルのために理解できずにおります。 アドバイスをお願いいたします。 ネットで調べて真似して書いてみましたがエラーになります。 DoCmdでエラーになります。 どこが悪いのかさっぱり解りません。 Private Sub コマンド0_Click() Dim MyPath As String Dim MyCSV As String MyPath = "C:\Users\OOO_OOO\Desktop\test\AAA*.csv" MyName = Dir(MyPath, vbNormal) Do While MyName <> "" DoCmd.TransferText acImportDelim, "T_AAA", _ "C:\Users\OOO_OOO\Desktop\test\" & MyName, False MyName = Dir Loop End Sub 大変申し訳ございませんが、アドバイスをお願い申し上げます。

  • ファイル名にドットを使ったファイルのインポート(ACCESSマクロ)

    Accessのマクロを作成しています。 ファイルを開くダイアログから複数ファイルを選択してCSVファイルをインポートするマクロを書きました。(最後に抜粋を記載します) インポートの行はこうなっています。 DoCmd.TransferText acImportDelim, , "traffic", varFname, True ファイル名に拡張子直前以外にドットを含むファイル名だと以下のエラーとなります。 実行時エラー '3011' オブジェクト'ドットを含むファイル名'が見つかりませんでした。オブジェクトが存在していること、名前やパス名が正しいことを確認してください。 余分なドットさえ含まなければ、50ファイル、7MBのインポートも問題ありません。 わけあってファイル名は変更できません。 ファイル名にドットを含む場合のインポートの書き方を教えてください。 宜しくお願い致します。 ===以下、抜粋=== '[ファイルを開く]ダイアログボックスを作成 Set dlgOpen = Application.FileDialog(msoFileDialogOpen) '[ファイルを開く]ダイアログボックスの初期設定 dlgOpen.AllowMultiSelect = True dlgOpen.Filters.Clear dlgOpen.Filters.Add "CSV", "*.csv" dlgOpen.InitialFileName = CurrentProject.Path '[ファイルを開く]ダイアログボックスを表示 ret = dlgOpen.Show '[キャンセル]ボタンを選択したときは、プロシージャを終了 If ret = 0 Then Exit Function End If 'カレントデータベースに接続 Set db = CurrentDb 'lineテーブルからレコードを取得 Set rs = db.OpenRecordset("line", dbOpenDynaset) '単数または複数選択されたファイル分だけ処理する For Each varFname In dlgOpen.SelectedItems 'CSVファイルをインポートする DoCmd.TransferText acImportDelim, , "traffic", varFname, True

専門家に質問してみよう