フォルダ内のファイルデータをひとまとめにする方法

このQ&Aのポイント
  • エクセル2003でフォルダ内のファイルデータをひとまとめに表示する方法を教えてください。
  • 毎日更新されるファイルデータを自動で集計し、『集計.xls』に表示させたいです。
  • VBAを使ってみましたが、うまくいきません。解決方法を教えてください。
回答を見る
  • ベストアンサー

フォルダ内のファイルデータをひとまとめにしたいです

エクセル2003です。 Cドライブに、『売上』というフォルダがあります。 売上フォルダの中には、下記画像のようにエクセルファイルがあります。 『本店.xls』 『銀座店.xls』 『お台場店.xls』 のデータを、『集計.xls』へひとまとめにして表示させたいのです。 データの内容は毎日更新され追加されていきます。 フォルダ内のファイルも、日によって変わり、 6/1は『本店.xls』 『銀座店.xls』 『お台場店.xls』 6/6は『本店.xls』 『日本橋店.xls』 6/10は『銀座店.xls』 『お台場店.xls』 『日本橋店』といった感じで、変更されます。 毎日、『集計』ファイルを開くと、フォルダ内全てのファイルがひとまとめになるようにしたいのです。 VBAで作ってみましたが、うまくいきません。 教えて頂けますか?よろしくお願い致します。

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

  • ベストアンサー
  • MSZ006
  • ベストアンサー率38% (390/1011)
回答No.4

#3です。遅くなりましたが補足を見ました。 エラーの原因がよく解らないのですが、各店のファイルと集計ファイル以外のファイルはフォルダ内には存在していませんよね。 あと、各店のファイルの見出し行の「日付」に相当するセルが、添付画像ですと空白に見えますが「日付」とでも入力しておいてください。見出し行に空白セルがあると正常に動きません。(ひょっとしたらこれが原因かも) 見出し行を修正して再度動かしてみてください。 エラーで止まった時に何かエラーメッセージが出ませんか? 開きっぱなしのファイルは各店のエクセルファイルのうちのどれかですか?

mimoza33
質問者

お礼

回答ありがとうございます。 フォルダ内には、別のファイルは存在していませんが、見出し行へ文字を入力する事でエラーが回避できました! おかげさまで出来そうです。 助かりました。ありがとうございました!

その他の回答 (3)

  • MSZ006
  • ベストアンサー率38% (390/1011)
回答No.3

#2です。 ちょっと違いますが作ってみました。 前提条件として、 (1)各店のファイルのsheet1のA1セルに店舗名が入力されている (2)各店の表はsheet1に作成されている (3)全てのファイルは同一フォルダ内にある ことが必要です。 ご質問の例では各店の表が縦に並んでいますが、横に並ぶように作ってあります。 「集計」ファイルのsheet3に集計されます。 マクロ「summary」を実行してください。 Option Explicit Private filename() As String Private cnt As Long Sub summary() Application.ScreenUpdating = False GetFileName CopySheet Application.ScreenUpdating = True End Sub Private Sub GetFileName() 'ファイル名一覧取得 Dim str As String Dim i As Long Dim path As String Dim thisbook As String path = ThisWorkbook.path + "\" thisbook = ThisWorkbook.Name str = Dir(path & "*.xls") cnt = 1 Do While str <> "" If str <> thisbook Then ReDim Preserve filename(cnt) filename(cnt) = str Else cnt = cnt - 1 End If cnt = cnt + 1 str = Dir() Loop ReDim Preserve filename(cnt) filename(cnt) = "" End Sub Private Sub CopySheet() '各店のシートを集計のsheet3にコピー Dim str As String Dim i As Long Dim pos As Long Dim lastrow As Long Dim lastcolumn As Long Dim key As String Dim s_ws As Worksheet Dim m_ws As Worksheet Dim m_wb As Workbook Dim Obj As Object i = 1 Set s_ws = Workbooks(ThisWorkbook.Name).Worksheets("Sheet3") Application.DisplayAlerts = False str = ThisWorkbook.path + "\" + filename(i) 'コピー元ファイル名フルパス Do While str <> ThisWorkbook.path + "\" Set m_wb = Workbooks.Open(str) Set m_ws = m_wb.Worksheets("sheet1") key = m_ws.Range("A1").Value lastrow = m_ws.Range("A2").End(xlDown).Row lastcolumn = m_ws.Range("A2").End(xlToRight).Column m_ws.Range(m_ws.Cells(1, 1), m_ws.Cells(lastrow, lastcolumn)).Copy 'コピー Set Obj = s_ws.Cells.Find(What:=key) If Obj Is Nothing Then '初めて出てくる店の場合 pos = s_ws.Range("A2").End(xlToRight).Column + 1 If pos = 257 Then pos = 1 Else '既出の店の場合 pos = s_ws.Cells.Find(What:=key).Column End If s_ws.Range(s_ws.Cells(1, pos), s_ws.Cells(1, pos)).PasteSpecial Paste:=xlPasteColumnWidths 'ペースト(列幅) s_ws.Range(s_ws.Cells(1, pos), s_ws.Cells(1, pos)).PasteSpecial 'ペースト m_wb.Close i = i + 1 str = ThisWorkbook.path + "\" + filename(i) 'コピー元ファイル名フルパス Loop s_ws.Range("A1").Select Application.DisplayAlerts = True End Sub

mimoza33
質問者

補足

MSZ006さま VBA作って下さってありがとうございました! 前提条件の通りにして何度かトライしているのですが、どうしてもエラーになってしまいます…。 あと、最初?に読み込んだファイルが開かれた状態になります…。

  • MSZ006
  • ベストアンサー率38% (390/1011)
回答No.2

ちょっと興味をもったので考えてみたいのですが、仕様の詳細がよく分からないので、補足をお願いします。 >フォルダ内のファイルも、日によって変わり、 >6/1は『本店.xls』 『銀座店.xls』 『お台場店.xls』 >6/6は『本店.xls』 『日本橋店.xls』 >6/10は『銀座店.xls』 『お台場店.xls』 『日本橋店』といった感じで、変更されます。 1)たとえば6/10ですと本店がありませんが、この日は本店の売り上げが無かった、ということでしょうか?  だとして、本店.xlsの表には6/10の行がない、ということですよね? 2)集計.xlsは必ず毎日開いて、各店の表を累積的に蓄えていく、ということですね?  たとえば6/10に開くと、本店.xlsがありませんが、集計.xlsには過去の本店の情報がたまっている、ということですね? 3)支店(お店)は限定されてはなくて流動的なのでしょうか?  現れるのは本店、銀座店、日本橋店、お台場店、の4店舗のみなのか、何店があるのか不明なのか? 以上、補足説明をお願いします。

mimoza33
質問者

補足

MSZ006さま ご覧下さってありがとうございます。 補足させて頂きます。 1)はい、売上のない日は行はありませんので、仰る通りです。 2)はい、その通りです。 3)支店は沢山ありまして、流動的です。 以上で補足できましたでしょうか?もし不明な点がございましたら、お知らせください。どうぞよろしくお願い致します。

回答No.1

集計.xlsの C3に、 =VLOOKUP(B3,[本店.xlsx]Sheet1!$A$3:$D$7,2) D3に、 =VLOOKUP(B3,[本店.xlsx]Sheet1!$A$3:$D$7,3) E3に、 =VLOOKUP(B3,[本店.xlsx]Sheet1!$A$3:$D$7,4) 下方向へ必要なだけコピー。 とりあえず、「本店」部分のみの一例です。 検索 → 転記 であれば、VLOOKUP関数の使い方を学べば可能でしょう。

mimoza33
質問者

補足

kuma310minさま ご回答ありがとうございます。 でも、vloookupでは難しいです。 と言いますのも、6/1・6/2・6/3・・・と毎日データが追加されますので、関数では上記[集計]ファイルのような表示にする為には、毎日[集計]ファイルを開き、操作しなければなりません。 バッチ処理として、集計ファイルを開くと、昨日までのデータが一括されてひとまとめに表示されるようにしたいのです。 ですので、VBAでないと出来ないかと思います。 皆さま、回答継続してお待ちしておりますので、よろしくお願い致します。

関連するQ&A

  • エクセルでフォルダ内にある複数ファイルからデータの抽出と集計をしたいのですが・・・

    検索し、似ている質問・回答を拝見させて頂いたのですが、どうも上手くいかなかったので、再度質問させて頂きます。 現在フォルダ(Aと仮定します)の中にエクセルファイル(**.xls形式で名前は個人名となっており、規則性はありません。)が複数入っております。エクセルファイルは同一フォーマットで作成しており、8つのシートに分かれております。その中に「一覧」というシートがあり、   1 2 3 4 5 6 7 ・・・ A  ** ** ** ** ** ** ** B ** ** ** ** ** ** ** C ** ** ** ** ** ** ** D ** ** ** ** ** ** ** E ** ** ** ** ** ** ** ・ ※12…と列、AB…と行で**は数値になっています。 という形式になっています。 ここで同一フォルダA内に集計用のBというファイルをつくり、そこで複数ファイルの「一覧」シート部分だけのデータを抽出し、集計を行いたいのですが、どの様にすれば宜しいでしょうか?? また、Aフォルダにファイルを増やした時に自動的に集計出来るようにすることは可能でしょうか?? 恐らくVBAを使用しなければならないと思うのですが、私の力だけではどうすることもできません。 是非、知恵をお借りしたいと思いますので、何卒宜しくお願い致します。

  • エクセル VBA ファイルをフォルダへ移動させる

    エクセル VBA 手探り状態です。 001大企業.xls、001中小企業.xls、003大企業.xls、003中小企業.xls、008大企業.xls、008中小企業.xls・・・・というファイルが300ほど企業種類という名前のフォルダにあります。 VBAで企業種類という名前のフォルダの中に、001、003、008・・・というフォルダは作成しました。 (ネットで”フォルダ作成”を検索して、、、自力ではVBAは書けません) それを001という名前のフォルダへは、001大企業.xls、001中小企業.xlsのファイル、003という名前のフォルダへは003大企業.xls、003中小企業.xlsのファイルを、008フォルダへは008大企業.xls、008中小業.xlsファイルを・・・というように、マクロで移動させたいのです。 これらのファイル、フォルダは全て、企業種類というフォルダの中にあります。 VBAを教えていただけましたら嬉しいです。

  • エクセルのVBAで開いているファイルと同じフォルダのファイルを開きたいとき

    エクセルのVBAで開いているファイルと同じフォルダのファイルを開きたいのですが、どうしても上手くいきません。 いろいろなフォルダやパソコンに移動しても使えるように C:\フォルダ1\TEST.XLS という指定ではなく、「今開いているファイルと同じフォルダから開く」ということはできますか? 上手く説明ができていなくて申し訳ありませんが、 もしよろしければ教えてください。

  • 複数のエクセルファイルの集計

    VBAを使って複数のエクセルファイルをあるひとつのファイルにコピーをするにはどうすればよいのですか? アンケート集計をしてます。同じフォルダー(C:\Test)にある回収した1000件分のアンケートを全てData.xlsに集計したいと思っております。具体的にはアンケート表の「1アンケート.xls」のセルS84:S94,S102:S115,S123:S131,S139:S154を]集計表.xls]のA1:AX1に行列を入れ替えて値貼り付けし、「2ンケート.xls」も同じセル番号を、「集計表.xls」のA2:AX2に、・・・・・・(繰り返し)・・・・・「1000アンケート.xls」を「、「集計表.xls」のA1000:AX1000という具合に集計したいと考えております。 似たような質問もあり、自分なりに調べてカスタマイズしてみましたが、VBAを全くやったことない私にはどうしても出来ません。どなたかご教授していただけると幸いです。

  • フォルダー内の支店ごとのブックを集計するマクロを

     エクセル2010で、1つのフォルダ内にある複数のエクセルファイル(約100支店分)から、日次売上等の集計マクロを作成したいのですが方法がわかりません。 上司からの依頼を受け、ひとり悩んでましたが・・・で皆さんに相談です。ご協力お願いします ■基本条件 ・毎日、支店がフォルダ内の売上情報を入力(更新)し保存する。 ・全店とも中身は同書式同形式ファイル  例)実績報告A店.XLS、実績報告B店.XLS・・・ ■マクロ(集計.XLS)でやりたいこと ・各支店ブックの実績シートから、支店名(A5)・売上A(B5)・売上B(C5)を転記し明細表の作成 ・集計表の作成 マクロど素人の私に、どなたか教えていただけますでしょうか? よろしくお願いします。

  • 複数のブックのデータを一つのブックにまとめたい

    http://t_shun.at.infoseek.co.jp/My_Page/Excel-VBA/vba_page1.htm ↑の 7. 指定したフォルダ内にあるExcelファイルを検索して開く の部分のマクロを利用して、集計.xlsというブックで、複数のブックを開くようにしましたが、そのブックを開いた時にそのブックのSheet2の中のデータのみコピーして、集計.xlsに貼り付けたいのですが、どのようにすればよいのか困っています。 指定したフォルダの中には、回答01.xls 回答02.xls ・・・と16個のブックがあります。順番に開いてコピーをするときに、どのようにブック名とシート名を指定すればよいのかわからず困っています。 何か参考になるものがあれば教えてください。 よろしくお願いします。

  • EXCEL VBAで指定したブックの保存場所を検索したい。(EXCEL2003)

     こんにちは、チェーン店型の店舗で働いている者です。  私が作ったVBA付のエクセルファイルを複数の店舗で使ってもらおうと考えてます。しかし、そのワークシートの中に他のブック(ここでは『売上集計表.xls』)のセルの値を参照しているセルが含まれており、参照する『売上集計表.xls』の保存場所が店舗によって違うので困っています。 『売上集計表.xls』は会社で作成されたものですので、どの店舗でも同じファイル名、レイアウトのうえ、『売上集計表.xls』という名のEXCELファイルはパソコンの中にひとつしか存在しません。 エクセルを起動したときに、参照するファイルが見つからないとリンクの編集をたずねてくるので、それでも大丈夫なのですが、パソコンに疎い人も多いので出来ればVBAで自動的にリンクを設定できるような仕組みがあればと思い質問させていただきました。

  • エクセル フォルダ内の.xlsファイルの集計

    エクセルで、複数の.xlsファイルの特定セルを集計するマクロを組みたいのですが、VBA勉強しはじめでうまくいかず、皆様の知識をお借りできればありがたいと思い質問させていただきます。 作業としては あるフォルダに複数の.xlsファイル(それぞれのファイルは同一形式で、sheet1およびsheet2は作業用シート。sheet3以降がデータの入ったシートとする)を置いておき、それぞれのデータ入りシート(シート数はファイルにより異なる)の特定セルを集計したものを、新たなブックに書き込む という形です。 その際に、各シートの特定セルの内容により出力するセルを変えたいと思っています。 実際には、 AAA.xlsというファイルの3枚目以降のシートで、L2セルに「B」と記述があれば別ブックのB3セルに、「C」と記載されていれば別ブックのC3セルに、それぞれD4セルの数値を集計する。 次にBBB.xlsというファイルに関しても同様に集計し、その結果はB4セルとC4セルに出力する これを当該フォルダに入っているファイル全てについて行う ※L2セルには「B」「C」以外の文字は入りません。 こういった作業ができればと思っています。 お時間のある方がおられましたら、ご教授いただけますでしょうか。 参考になるサイトなどがありましたら、アドレスだけでも御教えいただけると幸いです。 質問の仕方が悪いようでしたら、ご指摘いただければ再度説明させていただきます。拙劣な説明ですがどうかよろしくお願いします。

  • フォルダ内の特定ファイル名表示

    excel のVBAでmydoocumentの"abc"というフォルダの中にあるxls拡張子 付きのファイルを今開いているシートのA列にxxx.xlsと表示するマクロを書きたいのですが。教えてください。

  • フォルダ内全ファイルをシート毎に貼付方法について

    VBA仙人様ご教授お願い致します。 1フォルダに数十のログファイル(.txt)が格納されています。 1ファイルは3~5万行記述あります。 これを1つのExcelファイルにしたいと思っています。 VBA流れとして (1)ログ格納フォルダを選択 (2)ログファイル名を取得 (3)既存Excelファイルに(2)で取得したファイル名(.txt除いた)で順次シートを追加 (4)ログファイル=シートとなるようにファイル読み込み/貼り付け (5)ログファイルを閉じる VBAイメージ 格納フォルダ:C:\test \test内    :A001.txt,A002.txt,B003.txt・・・・・・・・Z051.txt(このフォルダにはログのみ格納) C:デスクトップ\集計マクロ.excel (VBAの記述のあるExcelシートにはSheet1のみが存在) VBA前 集計マクロ.excel/Sheet1 VBA実行後 集計マクロ.excel/Sheet1,A001,A002,B003,D004・・・・・・・・・Z051が追加、シート毎にログ情報記載 単一ファイルの読み込み/ファイル名をシート名に付与/情報コピペ/ファイル閉じについては、 作成できたのですが、複数ファイルの場合のファイル名を順次取得し、シート名として付与するなど objやValiant変数などで試行錯誤しましたが解決できず、こちらに質問されていただきました>< このVBAで作成されたシートからの集計マクロについては完成していますが、 その手前でつまづいています>< ご教授のほどお願い致します><

専門家に質問してみよう