- ベストアンサー
複数のExcelファイル
はじめて質問します。 ご存知の方教えてください。 複数のExcelファイルの一部分のセルの値を 瞬時に合計させたいのですが、マクロで組めますか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
例えばこんな感じでしょうか? ●動作の概要 ダイアログでブックを選択し(複数選択可) それぞれのブックの最初のシートのA1セルの値を加算して、 合計の値をアクティブブック(元から開いていたブック)の アクティブシートのB1セルの値に加算する。 '★標準モジュールに記述 '------------------↓ ココカラ ↓------------------ Sub Sample() Dim myBks As Variant Dim tpVal As Variant Dim i As Long myBks = Application.GetOpenFilename(, , , , True) Application.ScreenUpdating = False For i = 1 To UBound(myBks) With Workbooks.Open(myBks(i)) tpVal = tpVal + .Sheets(1).Range("A1").Value .Close False End With Next i Range("B1").Value = Range("B1").Value + tpVal Application.ScreenUpdating = True End Sub '------------------↑ ココマデ ↑------------------ 「ドラッグ&ドロップで」というのも一応書いてみました。 ●動作の概要 Sample2を実行するとB1セルに色がつきます。 この状態で、 ドラッグ&ドロップを含め、任意の方法で 「ファイルを開く操作」をすると、 それらのブックの最初のシートのA1セルの値を、 アクティブブック(元から開いていたブック)の アクティブシートのB1セルの値に加算します。 再度Sample2を実行するとB1セルの色が消え、 通常通りブックを開けるようになります。 '★「Class1」という名前のクラスモジュールを挿入して記述 '------------------↓ ココカラ ↓------------------ Public WithEvents App As Application Private Sub App_WorkbookOpen(ByVal Wb As Workbook) Call Sample3(Wb) End Sub '------------------↑ ココマデ ↑------------------ '★標準モジュールに記述 '------------------↓ ココカラ ↓------------------ Dim ECM As New Class1 Sub Sample2() With Range("B1").Interior If .ColorIndex = xlNone Then Set ECM.App = Application .ColorIndex = 34 Else Set ECM.App = Nothing .ColorIndex = xlNone End If End With End Sub Sub Sample3(ByVal Wb As Workbook) Dim tmpVal As Variant Application.ScreenUpdating = False tmpVal = Wb.Sheets(1).Range("A1").Value Wb.Close False Range("B1").Value = Range("B1").Value + tmpVal Application.ScreenUpdating = True End Sub '------------------↑ ココマデ ↑------------------ いずれもExcel2003で動作確認。以上ご参考まで。
その他の回答 (2)
- _Kyle
- ベストアンサー率78% (109/139)
- MoguraSE
- ベストアンサー率64% (81/126)
こんにちは。 マクロ(VBA)でももちろん実現可能ですが、計算式で十分可能です。 どの程度の範囲を参照するか分かりませんが、 =SUM([Book1]Sheet1!$A$1,[Book2]Sheet1!$B$2,[Book3]Sheet1!$C$3) などの計算式を使えば、ほかのブックにある値も参照できます。 離れた場所にあったり、ファイル名を変更したりすると追従してくれないので、手直しが面倒ですが…。 [Book1]Sheet1!$A$1などの参照は、ブックを開いておいて計算式の編集中にタスクバーで切り替え、目的のブックのセルをクリックすると自動入力されます。
お礼
こんばんは。 回答ありがとうございます。 申し訳ありません、質問内容が簡略すぎたようです。 回答頂いたようにファイル名や場所を変えなければ計算式で いけると思うのですが、ファイル名は日々変わるものです。 マクロ、VBA等の記述等ご存知でしたら教えていただけないでしょうか? <例> 3つのファイル(123.xls ABC.xls あああ.xls)すべてのA1に数値 が入っています。ファイル名は、日々変わります。 所定のExcelファイルのシート上にドラッグすればA1の数値だけをもってきてくれるマクロ(VBA)の記述とは??
お礼
お礼が遅れましてすみません。 回答ありがとうございます。 内容についていくつかわからない点もありますが、 一度やってみます。 一点だけ質問ですが、クラスモジュールとはなんですか?