• ベストアンサー

複数のExcelファイル

はじめて質問します。 ご存知の方教えてください。 複数のExcelファイルの一部分のセルの値を 瞬時に合計させたいのですが、マクロで組めますか?

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

  • ベストアンサー
  • _Kyle
  • ベストアンサー率78% (109/139)
回答No.2

例えばこんな感じでしょうか? ●動作の概要  ダイアログでブックを選択し(複数選択可)  それぞれのブックの最初のシートの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で動作確認。以上ご参考まで。

mk46494649
質問者

お礼

お礼が遅れましてすみません。 回答ありがとうございます。 内容についていくつかわからない点もありますが、 一度やってみます。 一点だけ質問ですが、クラスモジュールとはなんですか?

その他の回答 (2)

  • _Kyle
  • ベストアンサー率78% (109/139)
回答No.3

#2です。 >クラスモジュールとはなんですか? 標準モジュールの挿入の仕方は判るんですよね? 挿入の際に、「標準モジュール」の代わりに「クラスモジュール」を選べば、クラスモジュールが挿入されます。

  • MoguraSE
  • ベストアンサー率64% (81/126)
回答No.1

こんにちは。 マクロ(VBA)でももちろん実現可能ですが、計算式で十分可能です。 どの程度の範囲を参照するか分かりませんが、 =SUM([Book1]Sheet1!$A$1,[Book2]Sheet1!$B$2,[Book3]Sheet1!$C$3) などの計算式を使えば、ほかのブックにある値も参照できます。 離れた場所にあったり、ファイル名を変更したりすると追従してくれないので、手直しが面倒ですが…。 [Book1]Sheet1!$A$1などの参照は、ブックを開いておいて計算式の編集中にタスクバーで切り替え、目的のブックのセルをクリックすると自動入力されます。

mk46494649
質問者

お礼

こんばんは。 回答ありがとうございます。 申し訳ありません、質問内容が簡略すぎたようです。 回答頂いたようにファイル名や場所を変えなければ計算式で いけると思うのですが、ファイル名は日々変わるものです。 マクロ、VBA等の記述等ご存知でしたら教えていただけないでしょうか? <例> 3つのファイル(123.xls ABC.xls あああ.xls)すべてのA1に数値 が入っています。ファイル名は、日々変わります。 所定のExcelファイルのシート上にドラッグすればA1の数値だけをもってきてくれるマクロ(VBA)の記述とは??

関連するQ&A