• ベストアンサー

Excelで内容の自動更新

エクセルマクロについて教えてください。 複数の各担当者別のエクセルファイルと その担当者別のエクセルファイルの内容をすべてまとめた 総合のエクセルファイルがあります。 各担当者別のエクセルファイルに内容が入力されると、 総合のエクセルファイルにもその内容が自動的に追加されるようにすることは できるのでしょうか。 マクロを使わないと無理だとは思いますので、参考になるコード等があればご教授ください。 よろしくお願いいたします。

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

  • ベストアンサー
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.3

こんばんは、 取り合えず、各担当者のファイルをネットワーク上の共有フォルダーに転送データとでも名前をつけて、保存してください。 各担当者のファイルに、ボタンでも作成して、以下のマクロをコピィしてみてください。 また、L2セルに、保存した転送データのファイルのパスとファイル名を入れておきます。パスがわからなければ、保存したファイルのプロパティでも開けば出ています。\\パソコン名\フォルダ名\転送データ.xlsとかになると思います。 Sub ボタン3_Click() 'データが2行目のA~Jで、最大100行までとして、コピィします。 Range("A2:J100").Cut  'L2のセルに入れてあるファイル名(共有フォルダの転送ブックを開きます。 Workbooks.Open Filename:=Range("L2").Value 'もし、転送ブックをほかの人が開いていたら、閉じて作業中止します。 If ActiveWorkbook.ReadOnly = True Then ActiveWorkbook.Close MsgBox "他のユーザーが使用中です" Else  '転送データの最終の行のA列をアクティブにします。 Range("A65536").End(xlUp).Offset(1, 0).Activate  'コピィした部分を貼り付け ActiveSheet.Paste Application.CutCopyMode = False   '転送データのブックを保存して閉じます。 ActiveWorkbook.Save ActiveWindow.Close End If End Sub 以上が、各担当者のブックで実行するマクロです。 マクロを実行すると、シートの2行目A2~J100が転送データの最後の行から下にコピィされると思います。 次に、総合ファイルのL2にも、転送データのパスとブック名をいれて 以下のマクロを記述しておきます。 方法は同じですが、多少、実行する内容が違っています。 転送データの2行目A2~J1000を、総合テータの最後の行以下にコピペします。 Sub ボタン2_Click() '転送データのブックを開く Workbooks.Open Filename:=Range("L2").Value '転送データをほかの人が開いていないか確認 If ActiveWorkbook.ReadOnly = True Then ActiveWorkbook.Close MsgBox "他のユーザーが使用中です" Else 'データがあるかどうか確認 If Range("A65536").End(xlUp).Row = 1 Then ActiveWindow.Close MsgBox ("新規データはありませんでした") Else 'データのA2からJ1000をカット Range("A2:J1000").Cut '総合ファイルの最後の行をアクティブに ThisWorkbook.Activate Range("A65536").End(xlUp).Offset(1, 0).Activate 'データを貼り付ける ActiveSheet.Paste Application.CutCopyMode = False Workbooks("転送データ").Activate '転送データを保存して終了 ActiveWorkbook.Save ActiveWindow.Close End If End If End Sub 以上、こちらでは、試していませんが大丈夫かと思います。 すみませんが、今夜はお酒が入っているのでエラーでたら連絡ください。 ところどころに説明入れておきましたのそちらの状況に合わせて編修してください。 'で始まる部分は説明ですので、削除していただいてもかまいません。 難しいコマンドは使っていないと思いますので、理解してもらえると思います。

tkman0001
質問者

補足

ご返信遅れて申し訳ございません。 こちらで編集させていただいて問題なく動きました。 この様なやり方があったのですね~。 大変勉強になりました。 またご質問させていただいた際にはよろしくお願いいたします。 ありがとうございました。

その他の回答 (2)

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.2

やりたいことは、どこまで必要なのでしょうか。 1、各担当者が追加したデータを、総合のファイルの最後に加えていく。 2、各担当者が、総合のファイルも編修を行って、行った内容も総合ファイルに、反映させる。 2であれば、エクセルよりもアクセスなどで、ひとつのファイルを共有したほうが簡単です。 1でよければ、以下のテクニック参考にしてください。 準備 各担当者のパソコンに入力用のファイルを置く 各担当者が参照できる共有フォルダーに、仮にデータをためておくためのブックを保存しておく。 一人の総合ファイルの担当者に総合ファイルを準備 手順 1、各担当者がデータ追加していき、適当な件数入力したら、共有ブックのファイルを開いて、データをコピィ追加して保存、各担当者のデータは削除する。 2、ほかの担当者も同様の作業 3、時々、総合ファイルの担当者が共有ブックのフィル開いて、たまっているデータをコピィして、たまっていたデータを削除して保存。 この手順でよければ、マクロもさほど複雑でなく出来ると思います。 この手順でよければ、回答ください。 また、アドバイスいたします。

tkman0001
質問者

補足

ご回答ありがとうございます。 やりたいことは、まさに『1』の方です! 大変お手数ですが、ご教授ください。 よろしくお願いいたします。

  • sineminna
  • ベストアンサー率31% (118/370)
回答No.1

マクロ使わなくてもブックとシートを参照する式を入れれば反映されます。 Book2 Sheet1のA1セルの値を参照 =[Book2]Sheet1!$A$1

tkman0001
質問者

補足

すいません。説明が足りませんでした。 エクセルファイルの内容は顧客リストなのですが、 担当者別のエクセルファイルに顧客情報を追加していくと 総合のエクセルファイルにも追加されていくといった感じです。 回答いただいたやり方ですと、セルが固定されてしまうので出来ないのです。

関連するQ&A