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

このQ&Aのポイント
  • ACCESS2013を使って特定フォルダにある複数のファイルを一括でインポートする方法を知りたいです。ファイル名は連番になっており、テーブルには同じフィールド名とデータ型があるものとします。
  • 初心者ですが、ACCESS2013で特定フォルダにある複数のファイルをテーブルに一括でインポートしたいです。ファイル名は連番で、テーブルのフィールド名とデータ型は同じです。
  • ACCESS2013を使って複数のファイルを一括でインポートする方法を教えてください。ファイル名は連番になっており、テーブルには同じフィールド名とデータ型があります。初心者ですので、具体的な手順を教えていただければと思います。
回答を見る
  • ベストアンサー

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 大変申し訳ございませんが、アドバイスをお願い申し上げます。

質問者が選んだベストアンサー

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

「,」が一個足りないのでは? 式.TransferText(TransferType, SpecificationName, TableName, FileName, HasFieldNames, HTMLTableName, CodePage) の、 SpecificationName(スキーマファイル名)の部分です。詳しくはヘルプをご覧下さい。 たしかに、「'実行時エラー '31519':このファイルをインポートできません。」では何が悪いのか分かりませんね。 試していると、 'AAA1 - コピー.csvbak という名前のファイルもヒットしてインポートエラーになりました。バグ?ご注意下さい。 (当方Win7Home-64bit,Acc2010-32bitです) Subtest() Dim MyPath As String, MyName As String MyPath = GetDesktopPath & "\test" & "\" MyName = Dir(MyPath & "AAA*.csv", vbNormal) Do While MyName <> "" DoCmd.TransferText acImportDelim, , "T_AAA", MyPath & MyName, False MyName = Dir Loop 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

xyz00000
質問者

お礼

mitarashi様 有り難うございます。

関連するQ&A

  • エクセルのCSV形式の複数ブックを一括でインポートしたい

    あるフォルダ内にある「複数ブック(CSV形式)」をエクセルに一括でインポートしたいのです。フォルダ内にある複数のエクセルブックの名前はばらばですが、形式だけが全て同じです。 Book1 A B C 1 1 1 Book2 A B C 2 2 2 Book3 A B C 3 3 3 ↑  2つブックがあって最終的には・・・・ Book5 A B C 1 1 1 2 2 2 3 3 3 ↑ こうしたいです。複数ブックの一行目以下のデータ全てをひとつのものにまとめたいのです。(全ての複数のCSVブックは一行目は同じです。2行目以降を追加するみたいな感じです。) いろいろと調べて作ってみたのですが、「デバック」??で黄色くなって全く上手く行きません。 ご存知であれば是非教えてください。 ・~・・~・・~・・~・・~・・~・・~・・~・・~・・~・ Sub フォルダ指定連結() Dim myShell As Object Dim myFS As Object, myFile As Object Dim myName As String, myPath As String Dim myLine As String, newStr As String Set myShell = CreateObject("Wscript.Shell") myPath = myShell.Specialfolders("Desktop") & "\aaa\" Set myShell = Nothing Set myFS = CreateObject("Scripting.FileSystemObject") myName = Dir(myPath & "\*.csv\") Do While myName <> "" Set myFile = myFS.OpenTextFile(myPath & "\" & myName, 1) myFile.ReadLine '1行目スキップ Do Until myFile.AtEndOfStream myLine = myFile.ReadLine newStr = newStr & myLine & vbCrLf Loop myFile.Close myName = Dir() Loop Set myFile = myFS.CreateTextFile("C:\test.csv\", True) myFile.Write newStr myFile.Close Set myFS = Nothing Set myFile = Nothing End Sub ・~・・~・・~・・~・・~・・~・・~・・~・・~・・~・ これが教えていただいたり、自分で修正を加えたりしたぶんですが・・・。 環境はウィンドウズXPで2002です。

  • ダイアログボックスからフォルダ名を取得し、フォルダ内のCSVファイルを

    ダイアログボックスからフォルダ名を取得し、フォルダ内のCSVファイルをすべてアクセスのテーブルにインポート使用と思っています。 ところがCSVファイルの数の分だけ、1つめのCSVファイルの中身が繰り返しインポートされてしまっています。 どの部分に誤りがあるのでしょうか? お知恵を拝借できますでしょうか・・・。 コードは以下になります。 Private Sub cmd06_Click() Dim MyFile As String Dim MyName As String Dim MyName02 As String Dim strFolderName As String strFolderName = GetFolderName() 'フォルダ選択ダイアログを表示 If Len(strFolderName) > 0 Then '選択結果を評価 MyFile = strFolderName & "\*.csv" '【拡張子csvのファイルのみ取得】 MyName = Dir(MyFile, vbNormal) MyName02 = "\" & MyName Do While MyName <> "" If MyName <> "." And MyName <> ".." Then If GetAttr(strFolderName & "\" & MyName) <> vbDirectory Then DoCmd.TransferText acImportFixed, "T03_インポート定義", "T03_全CSVデータ", strFolderName & MyName02, False, "" '【取得したファイルをインポート】 End If End If MyName = Dir Loop Else MsgBox "フォルダは選択されませんでした" End If MsgBox "データのインポートが終了しました" End Sub

  • ACCESS VBA でのCSV取込エラー

    ACCESS VBA でのCSV取込エラー ACCESSにてフォルダ内にあるCSVファイルをすべてインポートしようとしています。 インポート定義を作成して、下記のコードを書いてみましたが、 データはすべてインポートされるのですが、 カンマが無視され、フィールドとフィールドの中間で途切れてデータが格納されてしまいます。 またフィールド4は日付形式なのですがこれがインポートエラーになります。 フィールド1 フィールド2 フィールド3 フィールド4 aaa aa,bbb bbb,ccc  エラー 2日間ほどネットサーフィンをして調べたのですが、 回避方法が見つからなかったので、お知恵を拝借できますでしょうか? よろしくお願いいたします。 Private Sub cmd06_Click() Dim MyFile As String Dim MyName As String Dim strFolderName As String DoCmd.SetWarnings False DoCmd.OpenQuery "Q09_全CSVデータ削除" DoCmd.SetWarnings True strFolderName = GetFolderName() 'フォルダ選択ダイアログを表示 If Len(strFolderName) > 0 Then '選択結果を評価 MyFile = strFolderName & "\*.csv" '【拡張子csvのファイルのみ取得】 MyName = Dir(MyFile, vbNormal) Do While MyName <> "" If MyName <> "." And MyName <> ".." Then If GetAttr(strFolderName & "\" & MyName) <> vbDirectory Then DoCmd.TransferText acImportFixed, "インポート定義", "T03_全CSVデータ", strFolderName & "\" & MyName, False, "" '【取得したファイルをインポート】 End If End If MyName = Dir Loop Else MsgBox "フォルダは選択されませんでした" End If MsgBox "データのインポートが終了しました" End Sub

  • EXCELファイルからACCESSへインポート

    質問させていただきます。 ACCESSのフォームから、EXCELファイルを選択してEXCELの内容を、 テーブルにインポートさせたいのですが。以下の方法で行って いるのですが、テーブルに反映されません。 Private Sub cmd_Import_Click() Dim InitialFileName As String Dim varTitle As Variant Dim FileName As String InitialFileName = "hoge.xls" varTitle = "ファイルを開く" FileName = GETHOGEOPEN(varTitle, InitialFileName) DoCmd.SetWarnings False DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "T_HOGE", FileName, True DoCmd.SetWarnings True MsgBox "完了しました" End Sub ACCESS → ACCESS2003 SP3 EXCEL →EXCEL2003 SP3 よく見ると、すでにEXCELのバージョン指定が違う(汗) これが原因かも・・・・(汗) わかる方がいらっしゃったら教えてください。

  • Excel 2010 VBA:ファイル名を読み込む

    下は複数のcsvファイルを一つに合体するVBAです。これにシートの右端に読み取ったファイル名を追加するにはどうしたらよいでしょうか。 よろしくお願いします。 Sub macro1() Dim myPath As String Dim myFile As String Dim s As String myPath = ThisWorkbook.Path & "\" On Error Resume Next Kill myPath & "合体版.csv" On Error GoTo 0 myFile = Dir(myPath & "*.csv") If myFile = "" Then Exit Sub Open myPath & "合体版.csv" For Output As #1 Do Until myFile = "" Open myPath & myFile For Input As #2 Do Until EOF(2) Line Input #2, s Print #1, s Loop Close #2 myFile = Dir() Loop Close #1 End Sub

  • Accessを使ったデータの一括インポートについて

    VBA初心者です。 現在ExcelのデータをAccessにインポートする方法を探しています。 フォルダの構成としては 親フォルダに子フォルダがあり、そのなかにファイルがあります。 例としましては 親フォルダ 子フォルダ ファイル名 A aaaa 1111 B bbbb 2222 C cccc 3333 D dddd 4444 E eeee 5555 F ffff 6666 と言った感じです。 自分なりに調べて1つのフォルダの中にあるデータは全てインポートできそうです。(aaaaフォルダ内等) 現在、親ごとにテーブル分けして一括インポートできる方法を探しています。 現在のコードは Private Sub AAA_Click() Dim dname As String Dim fname As String Dim tblname As String dname = "c:\フォルダ名\" tblname = "テーブル名" fname = Dir(dname & "*.xls") Do While fname <> "" DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, tblname, dname & fname, True fname = Dir() Loop End Sub これを用いようと考えてます。 ここから子フォルダ内を全て1つのテーブルにまとめるというところでつまづいております。 初心者のためコードも頂けると助かります。 よろしくお願いします。

  • 複数ファイルのA1だけを抽出して別ファイルにしたい

    すみませんが、教えてください。 特定のフォルダ内に入っているcsvのA1列目のみ抽出して別ファイルにしたく、検索したところ 同じように困っていた方がいたようで、参考にさせていただいたのですが、 以下を実行しても インデックスが有効範囲にありませんと出ます。 各csvファイルのシート名は 1000近くあるファイル全て違い、別々の名前(コード00-000とか)になっています。 (エクセルで開いたとき) お手数ですが、教えていただきたくお願いいたします。 参考にしたマクロです。 Sub macro1() Dim myPath As String Dim myFile As String myPath = "ファイルの場所\" myFile = Dir(myPath & "*.xls") Do Until myFile = "" Workbooks.Open myPath & myFile With Workbooks("集約.xls").Worksheets("Sheet1").Range("A65536").End(xlUp) .Offset(1, 0).Value = myFile .Offset(1, 1).Value = Workbooks(myFile).Worksheets("概要").Range("C3").Value End With Workbooks(myFile).Close savechanges:=False myFile = Dir() Loop End Sub 宜しくお願いいたします。

  • access全画面表示されない

    VBからacesssを開くと全画面表示されません。 しかし、フォルダをダブルクリックして開いたり、 空のaccessアプリケーションを立ち上げて、「ファイルを開く」で開くと、全画面表示されます。 【VB】-------------------------------------------- Sub AccOpen() Dim AccApp As Access.Application Dim MyPath As String MyPath = "○○.accdb" AccApp = CreateObject("Access.Application") AccApp.OpenCurrentDatabase(MyPath) AccApp.Visible = True AccApp.UserControl = True End Sub -------------------------------------------------- 【access】---------------------------------------- Private Sub Form_Load() DoCmd.RunCommand acCmdAppMaximize 'アプリケーションのサイズを最大化する Vbから開くと最大化されない。 End Sub -------------------------------------------------- としています。 アクセス2007、VB2010です。 VBからだと DoCmd.RunCommand acCmdAppMaximizeが無視される理由を教えてください。

  • アクセスのVBEの初歩的な質問

    アクセス(に限らないとは思うのですが)のVBEを今、一生懸命勉強しているのですが、初歩的なところで、つまずいています。 あああ いいい ううう えええ 1 1 あいうえお かきくけこ 1 2 あいうえお かきくけこ 1 3 あいうえお かきくけこ 2 1 あいうえお かきくけこ 2 2 あいうえお かきくけこ 2 3 あいうえお かきくけこ 3 1 あいうえお かきくけこ 3 2 あいうえお かきくけこ 3 3 あいうえお かきくけこ というような、データを自動で入力したいのです。多分、for next と、do until あたりを組み合わせるとできると思うのですが、どうしてもうまくいきません。 とりあえず、以下のような、めちゃめちゃ効率の悪いコードを書いたのですが、もっと効率よくするには、どうしたらいいでしょうか?  ………………………………………………… Private Sub コマンド6_Click() Dim Aaa As Integer Dim Bbb As Integer Dim Ccc As String Dim Ddd As String DoCmd.GoToRecord , , acFirst Aaa = 1 Bbb = 0 Ccc = "あいうえお" Ddd = "かきくけこ" For i = 1 To 3 Bbb = Bbb + 1 あああ = Aaa いいい = Bbb ううう = Ccc えええ = Ddd DoCmd.GoToRecord , , acNext Next i Aaa = 2 Bbb = 0 For i = 1 To 3 Bbb = Bbb + 1 あああ = Aaa いいい = Bbb ううう = Ccc えええ = Ddd DoCmd.GoToRecord , , acNext Next i Aaa = 3 Bbb = 0 For i = 1 To 3 Bbb = Bbb + 1 あああ = Aaa いいい = Bbb ううう = Ccc えええ = Ddd DoCmd.GoToRecord , , acNext Next i End Sub …………………………………… ほんとうに、おはずかしいのですが、どうかご指導くださいませ。m(__)mm(__)m

  • 「accessがもし開いてるなら開かない」とするに

    「accessがもし開いてるなら開かない」とするには? http://okwave.jp/qa/q7856640.html を参考にしたのですが、 Sub test1() Dim AccApp As Access.Application Dim MyPath As String MyPath = "C:\Users\Documents\test.mdb" AccApp = CreateObject("Access.Application") AccApp.Visible = True AccApp.OpenCurrentDatabase(MyPath) AccApp.UserControl = True End Sub で、アクセスのファイルを開くことができるのですが、 もし"C:\Users\Documents\test.mdb"が開いていたら開かない とするにはどうすればいいでしょうか? http://okwave.jp/qa/q8051720.html これのアクセスバージョンをするにはどうすればいいですか? Dim book As Workbook や For Each book In Workbooks をアクセスの場合、どうすればいいのかわかりません。

専門家に質問してみよう