質問: エクセルで5つのブックの最新データを別のブックにまとめたい。 エクセルで5つのブックの最新データを別のブックにまとめたい。 5人の担当者が、並行してデータ入力しているブックがあります。 セルの配置や項目は一緒です。 各担当者は、データを日々継ぎ足ししており、 そのデータを別のブックに日々、集約していきたいのです。 継ぎ足される順序は、問いません。 重複や漏れがなければ、okです。 都度、コピペしていけば良いのですが、 各担当が入力完成時にマクロ等でボタン一発でいけたら幸いです。 ちなみにそれぞれのブックは、共有フォルダ内で作業しています。 1データ20項目で文字と数字主体で、関数等は含まれません。 それぞれの担当者に通し番号データもあります。
回答: 今日わ まず、やってもらいたい事があります。 共有フォルダに、次に二つのフォルダを作ってください。 更新前フォルダ 更新済フォルダ 更新ブックの処理 前提 一行目は、見出しである a列zまでを転記する a列は必ず、記入する aa列は、転記状況の表示に用いる private sub workbook_beforesave(byval saveasui as boolean, cancel as boolean) dim ttt as string dim i as long dim j as long dim k as long ' ttt = "ファイルのパス"... \\xxx\xxx\転記前フォルダ ' コンピュータ名 = environ("computername") ttt = thisworkbook.path i = cells(rows.count, "a").end(xlup).row j = cells(rows.count, "aa").end(xlup).row if i = j then exit sub workbooks.add thisworkbook.sheets("sheet1").range("a1:z1").copy _ activeworkbook.sheets(1).range("a1") thisworkbook.sheets("sheet1").cells(j + 1, 1).resize(i - j, 26).copy _ activeworkbook.sheets(1).range("a2") activeworkbook.saveas ttt & "\" & _ format(now, "yyyymmddhhmmss") & _ environ("computername") & ".xls" activeworkbook.close for k = j + 1 to i thisworkbook.sheets("sheet1").range("aa" & k).value = _ "済 この行は削除してもいいです。" next k end sub 集約ブックの処理 言葉で、もっと詳しく書きます。解らなければ、もう一度質問してください。 ワークブックオープンの処理です。 まず、共有フォルダの更新前フォルダに、ブックがあるかどうか調べます。 ブックが有ったら、以下の処理をします ブックを開きます。 そのブックの、sheets(1)の二行目から最終行まで、aからzまでの列をコピーします。 集約ブックに、追加貼り付けします。 更新前フォルダから今開いたブックを更新済フォルダにセーブします。 更新前フォルダから今開いたブックを削除します。 更新前フォルダにあるブック数だけ繰り返します。 終わりです。