ACCESSのファイルを一本化!アンケート集計を簡単にまとめる方法

このQ&Aのポイント
  • 各支店でアンケート集計をしてもらい、送られてくる元ファイルをVBAで1つのファイルにまとめる方法が知りたいです。ファイルの構造は統一されており、アンケート日ごとにファイルがフォルダにまとめられています。
  • 解決したい課題は、毎日たまる100個以上のファイルを自動化して一つにまとめることです。自動化処理を行いたいので、VBAの活用方法を教えていただきたいです。
  • ハッシュタグ: #ACCESSファイル一本化 #アンケート集計 #VBA #自動化処理 #ファイルまとめ
回答を見る
  • ベストアンサー

ACCESSのファイルを一本化したい!

各支店でアンケート集計をしてもらい、入力データが.mdb or .accdbで送られてきます。 それを VBAで”1ファイル”にまとめたいのですが、お知恵をお貸しください。 送られてくる元ファイルの構造は1ファイル1テーブル(table名 table_01)、テーブルの構造は統一されてます。 アンケート日ごとにファイルをフォルダーにまとめてあります。 ex. C:\Users\AD\20111101\001.mdb C:\Users\AD\20111101\002.mdb ・     ・ C:\Users\AD\20111102\001.mdb C:\Users\AD\20111102\002.mdb ・     ・ 各フォルダー内ごとに、まとめたファイルを作成したいのです。 (毎日 100fileほどたまります。どうしても自動化したくて・・・) よろしくお願いします。

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

  • ベストアンサー
回答No.1

ツール内にテーブル 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

ksk_mpb
質問者

お礼

ありがとうございます。 フォルダ内のすべてのファイルのPath, Nameの取り方勉強になりました。 取り組んでみます。 またフォローしていただけると助かります。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

(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つずつの全レコードを集約テーブルに書き出せば良いが、回りくどいように思う。 質問者は相当勉強しないと難しい内容と予想。

ksk_mpb
質問者

お礼

そうですよねぇ、私には荷が重いかもしれません。 当面、手動でコピーしていきますが、将来的には自動化したい。 またその期会にはアドバイスください。 ありがとうございます。

関連するQ&A

  • Database.mdbと言うファイル

    議事録.accdbと言うファイルを共有フォルダに入れておいたら、 勝手にDatabase.mdbと言うファイルが同じフォルダに作られたのですが どうしてでしょうか? そもそもバージョンは2010なのになぜにmdbファイルが出来上がったのか謎です。 議事録.accdbを開いているときに 一度エラーになり、強制終了したことがありますが そのタイミングでDatabase.mdbが出来上がったのかなと思いますが そのような事があるのでしょうか?

  • Accessのファイルサイズ縮小について

    Access 2000で作成したmdbファイルを Access 2013環境で使用しています。 ・テーブルのみのmdbファイル(1)があります。  mdbファイル(1)の中には、テーブルオブジェクトが1つあり、フィールドが1つ、  フィールドサイズは255です。レコード件数は、36万5000件程度あります。 ・フォームやクエリ、マクロ、mdbファイル(1)と  リンクテーブルでつないでいるmdbファイル(2)があります。 mdbファイル(1)のファイルサイズが、90MBに達しており mdbファイル(2)を開いたり、何か処理させるのを遅くしているのではないか と思っています。 他の方の質問をチェックしましたが、結果は 最適化について  オプション→現在のデータベース→閉じるときに最適化する→チェックON済み  手動で最適化する→変化なし。 MDBをMDEに変換する  Access 2013では、バージョンが違うので変換できないようです。  accdb形式に変換→accde形式に変換しましたが、変化なし  (そもそも、ファイル(1)はテーブルのみで、マクロやプロシージャは無いので、  意味が無かったかも) となっており、対処法が見つからなくて困っています。 何か良い案はないでしょうか。

  • ACCESSのマクロで別のPCにあるmdbを起動

    初心者です。 AというPCにテーブル更新用のB.mdbファイル(主にテーブル作成クエリ)を作成して共有フォルダにおいて、CというPCに別のD.mdbファイルを作成しています。 B.mdbで作成されたテーブルをD.mdbファイルにリンクしておき、さまざまなクエリでテータをとっています。 この場合、CというPCにあるD.mdbからマクロでAというPCにあるB.mdb起動してすべてのテーブルを更新させたいですが、可能でしょうか? 事情がありまして、上記のことができれば大変助かります。 B.mdbファイルにはすべてのテーブルを更新するようにマクロを作成してAutoExecとしています。 同じPCである別のmdbを起動する場合は、マクロ→アプリケーションでコマンドラインに下記のように記述して動きましたが、別のPCにあるmdbを起動する場合はどうすればいいのか教えていただけないでしょうか? 「""C:\Program Files\Microsoft Office\OFFICE11\MSACCESS.EXE" "C:\PartManagement7\01_IFS Work Table_1.mdb"」 ちなみに、AというPCはXPで、ACCESS 2003で、CというPCはWindows7でACCESS 2003です。

  • ファイルを複製するバッチファイル

    バッチファイル作成 現状 業績評価というフォルダがあり、その中に【全店集計】フォルダが1つ、【○○支店】というフォルダが20あります。 【○○支店】というフォルダの中には、“店舗集計○○支店”というExcelファイルと、【個人実績】フォルダがあります。 “店舗集計○○支店”は、【個人実績】フォルダ内の全Excelファイルをパワークエリで結合したものです。 その店舗集計ファイルを、【全店集計】フォルダ内に複製して、それをクエリで結合して集計をしています。 やりたいこと 各店舗の“店舗集計○○支店”が更新されたら、【全店集計】フォルダ内に複製して上書きするバッチファイルを作りたいのですが、ご教授いただけないでしょうか。

  • mdbファイル

    こんにちは。 Accesseのmdbファイルにていて教えてください。 OracleテーブルのPrimaryKeyのような設定をmdbのテーブに出来るのでしょうか? 例えばOracleのAテーブルの構造が以下の場合 mdbのテーブルでは、どのように設定するのしょうか? Oracleテーブル テーブル名:test 項目1:A 項目2:B 項目3:C 項目4:D Primary key A,C,D

  • これもaccessファイルを共有している事になりま

    これもaccessファイルを共有している事になりますか? 1つのパソコン(vista)を複数のユーザーで共有し db1.mdbをパブリックのフォルダに置き ユーザー1ログオン時に、db1.mdbを開き ユーザーを切り替えて ユーザー2でログオンし、db1.mdbを開いてデーター入力することも 「アクセスを共有してる」 「db1.mdbを共有して使ってる」 という事になりますか?

  • 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"

  • Microsoft Accessのデータが、別々のmdbファイルとして

    Microsoft Accessのデータが、別々のmdbファイルとして2つあります。Accessを持っていないので、OpenOfficeで開いています。このmdbファイルにあるテーブルをまとめてOpenOfficのBaseで開くことはできないでしょうか? 具体的には、Microsoft Accessのデータ、「aaa.mdb」「bbb.mdb」というファイルがあります。 「既存のデータベースに接続」>「Microsoft Access」で、「aaa.mdb」や「bbb.mdb」に、個別に接続して新規データベースを作成することはできたのですが、どちらのmdbファイル内にあるテーブルも参照してクエリを作りたいんです・・・。 また、過去に無理矢理「bbb.mdb」のテーブルをCtrl+c>Ctrl+vで「aaa.mdb」にコピー&ペーストしていたこともありましたが、今回はテーブルサイズが大きいせいか、エラーになります(メッセージ:エラーが発生しました。コピー処理を続行しますか)。 データベースに関する基礎知識が足りないので、そもそもそれができるかどうかも分かりません。 Webで検索しても参考になるサイトを見つけられませんでした。 よろしくお願いいたします。

  • EXCEL 時刻起動で複数ブックを1つにまとめる

    お世話になります。 私のデスクトップの[テスト]というフォルダに[東京支店集計.xls]というブックがあります。 [テスト]フォルダの中にさらに[個人別]というフォルダがあり、この中に下記の3つのファイルが置いてあります。 東京支店_田中.xls 東京支店_鈴木.xls 東京支店_山本.xls [やりたいこと] 毎日15:00になったら自動で上記3つのファイルを[東京支店集計.xls]に全データコピー貼り付けして[東京支店集計.xls]にデータを集約したいのです。 [東京支店集計.xls]には毎回全データ上書きしたいのです。 このとき個別の"東京支店_田中.xls"ブックなどは担当者によってフィルターなどがかけられている可能性があるため、集約時にはフィルターを取り除いた形で全データを貼り付けしたいです。 [個人別]フォルダ配下のファイルを集約する時、3つにのファイル名を指定するやり方でもいいですが、ファイルの数が増える場合もありますため、できれば[個人別]フォルダ配下のファイル全てコピー貼り付けする、という動作だと助かります。 私が考えているのは[東京支店集計.xls]にVBAで上記のファイルを集約するコードを作成して、15:00に起動して動かす、という流れなのかと思っております。 初心者のためVBAコードと時刻自動のセットの方法をご教授いただけすと大変助かります。 ★東京支店集計.xlsのファイルパス C:\Users\ユーザー名\Desktop\テスト\東京支店集計.xls ★個人別ファイルのファイルパス C:\Users\ユーザー名\Desktop\テスト\個人別\東京支店_田中.xls C:\Users\ユーザー名\Desktop\テスト\個人別\東京支店_鈴木.xls C:\Users\ユーザー名\Desktop\テスト\個人別\東京支店_山本.xls お手数をおかけしますが、どなたかお知恵をお借りできますでしょうか。 よろしくお願い致します。 環境 Excel2013 Windows7

  • MDBファイルでのリンク更新

    リンクテーブルになっている場合、フォルダを移動するとリンクが切れてしまいます。 リンク更新のサンプルはいくつかあったのですが、それらは元テーブルとリンクの名前が同じ場合についてでした。 リンク名とテーブル名が異なっている場合はどうなるのでしょうか? または、A.MDBのリンクAに対してB.MDB上の同じ構造のテーブルA, テーブルB, テーブルCを順に切り替えて処理したい場合、どのように指定してやるといいのでしょうか?

専門家に質問してみよう