- ベストアンサー
ACCESSのファイルを一本化!アンケート集計を簡単にまとめる方法
- 各支店でアンケート集計をしてもらい、送られてくる元ファイルをVBAで1つのファイルにまとめる方法が知りたいです。ファイルの構造は統一されており、アンケート日ごとにファイルがフォルダにまとめられています。
- 解決したい課題は、毎日たまる100個以上のファイルを自動化して一つにまとめることです。自動化処理を行いたいので、VBAの活用方法を教えていただきたいです。
- ハッシュタグ: #ACCESSファイル一本化 #アンケート集計 #VBA #自動化処理 #ファイルまとめ
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ツール内にテーブル table_01 を準備しておきます。 1) フォルダ内の全てのファイルにアクセスする。 2) mdb(accdb)ファイルのとき、以下の処理を行う。 2.1) アクセスしたファイルの table_01 をリンクテーブルでリンク。テーブル名は変える。 2.2) リンクしたテーブルのデータを追加クエリで table_01 へ INSERT する。 2.3) リンクを外す。 3) 上記を繰り返す。 です。 リンク⇒INSERT⇒リンク外す はわかると思うので(Accessの基本機能だし) ヒントとして、フォルダ内の全ファイルにアクセスする方法を。 「参照設定」で“Microsoft Scripting Runtime”にチェックを入れてから、以下を入力&実行して下さい。 Sub ex() Dim objFSO As New FileSystemObject Dim objFLD As Folder Dim objFIL As File Set objFLD = objFSO.GetFolder("C:\") For Each objFIL In objFLD.Files Debug.Print objFIL.Name, objFIL.Path Next End Sub
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
(1)こういうのは、同一ファイルで別テーブルになっておれば、ユニオンクエリというのを使うのだと思う。 http://www.sk-access.com/Syo_Query/SqA013_Union.html しかしアクセスとしては中級以上の課題だと思うし、多数のテーブルがあれば、VBAでSQL文を加工して、繰り返し実行しないとならない。 Select * From Test01 UNION ALL Select * From test02; のようなSQLです。 2,3テーブルであれば Sub test01() Dim db As DAO.Database Dim qdf As DAO.QueryDef Set db = CurrentDb strSQL = "Select * From Test01" strSQL = strSQL & " UNION ALL" strSQL = strSQL & " Select * From test02;" MsgBox strSQL Set qdf = db.CreateQueryDef("q2Test01", strSQL) DoCmd.OpenQuery qdf.name End Sub (2しかし本件は、別テーブルでなくて、別ファイル(.mdb)になっている. (3)レコードを扱うADOなどなら100個を開いて読んで、1つずつの全レコードを集約テーブルに書き出せば良いが、回りくどいように思う。 質問者は相当勉強しないと難しい内容と予想。
お礼
そうですよねぇ、私には荷が重いかもしれません。 当面、手動でコピーしていきますが、将来的には自動化したい。 またその期会にはアドバイスください。 ありがとうございます。
お礼
ありがとうございます。 フォルダ内のすべてのファイルのPath, Nameの取り方勉強になりました。 取り組んでみます。 またフォローしていただけると助かります。