例えばこんな感じでしょうか?
●動作の概要
ダイアログでブックを選択し(複数選択可)
それぞれのブックの最初のシートの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で動作確認。以上ご参考まで。
お礼
お礼が遅れましてすみません。 回答ありがとうございます。 内容についていくつかわからない点もありますが、 一度やってみます。 一点だけ質問ですが、クラスモジュールとはなんですか?