Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


9797 / 13644 ツリー ←次へ | 前へ→

【25294】複数ブックの同名シート同セル位置の数値... ばら 05/5/27(金) 9:39 質問[未読]
【25300】Re:複数ブックの同名シート同セル位置の数... Jaka 05/5/27(金) 12:31 回答[未読]
【25302】Re:複数ブックの同名シート同セル位置の... ばら 05/5/27(金) 13:30 質問[未読]
【25305】Re:複数ブックの同名シート同セル位置の... kazu 05/5/27(金) 14:12 回答[未読]
【25410】Re:複数ブックの同名シート同セル位置の... ばら 05/5/31(火) 9:17 お礼[未読]
【25375】Re:複数ブックの同名シート同セル位置の... Jaka 05/5/30(月) 10:27 発言[未読]
【25415】Re:複数ブックの同名シート同セル位置の... ばら 05/5/31(火) 9:43 お礼[未読]

【25294】複数ブックの同名シート同セル位置の数値...
質問  ばら  - 05/5/27(金) 9:39 -

引用なし
パスワード
   初めて投稿させていただきます。よろしくお願いします。

複数ブックの同名シート同セル位置の数値を合計するマクロを考えているのですが、どうも良い方法が思いつきません。

例えば同一フォルダ内にBook1〜Book5があって、それらは全て"あ""い""う"というシート名のシートが含まれているとします。
そして、新規のブックに、全5ブックのシート"あ"の合計のシート、"い"の合計のシート、・・・というように出力されるようにしたいと考えております。

それほど難しいことではないという気がして恐縮ですが、ブックを跨いだ操作に不慣れなため質問させていただきました。

どなたか詳しい方にご教授いただければ幸いです。
よろしくお願いいたします。

【25300】Re:複数ブックの同名シート同セル位置の...
回答  Jaka  - 05/5/27(金) 12:31 -

引用なし
パスワード
   こんにちは。
もう帰るので、他の方法を試す時間がないです。

Stt = "SUM(Sheet1:Sheet3!A1)"
MsgBox Application.Evaluate(Stt)

ただの関数
=SUM(Sheet1:Sheet3!A1)

串刺しって奴です。

【25302】Re:複数ブックの同名シート同セル位置の...
質問  ばら  - 05/5/27(金) 13:30 -

引用なし
パスワード
   Jakaさん

帰る間際のところご回答をいただきましてありがとうございます。
この関数の例ですと、同一ブック内の複数シートの合計が算出されると思いますが、異なるブックの同一名シートの合計を、新規ブックなどに出力したいと考えております。
私の質問が曖昧で意図をお伝えしきれず申し訳ございません。
イメージとしては(これではダメだと思いますが)、

Dim wsheet As Worksheet
For Each wsheet In Worksheets
 「今のシートの各セルについて、Book1〜Book5の和」
Next wsheet

というような感じです。
ただ、このような書き方ですと、wsheetというのがどのブックのことなのかが指定できず、間違っていると思います。

良い方法がありましたら、どうぞよろしくお願いいたします。

【25305】Re:複数ブックの同名シート同セル位置の...
回答  kazu  - 05/5/27(金) 14:12 -

引用なし
パスワード
   ▼ばら さん:
Sub H()

'対象シート名の配列
ArySht = Array("SHEET1", "SHEET2", "SHEET3")
'対象セルの配列
AryRng = Array("A1", "A2", "A3", "A4", "A5")

BNM = Application.GetOpenFilename(".XLS,*.XLS", , "集計ファイル選択", , True)
If TypeName(BNM) <> "Boolean" Then  
  For Each BUF In BNM
    XT = Split(BUF, "\")
    STR1 = "='" & Left(BUF, Len(BUF) - Len(XT(UBound(XT)))) & "[" & XT(UBound(XT)) & "]"
    For Each SHT In ArySht
      For Each RNG In AryRng
        STT = STR1 & SHT & "'!" & RNG
        WITH Sheets(SHT).Range(RNG)
        I = .Value
        .Value = STT
        .Value = .Value + I
        End With
      Next
    Next
  Next
End If

End Sub

【25375】Re:複数ブックの同名シート同セル位置の...
発言  Jaka  - 05/5/30(月) 10:27 -

引用なし
パスワード
   >複数ブックの
目に入ってませんでした。

こんな感じに関数を作って入れても良いし、
=SUM([Book1.xls]Sheet1!A1,[Book2.xls]Sheet1!A1,[Book3.xls]Sheet1!A1,A1)

MsgBox Application.Sum(Workbooks("Book1.xls").Sheets("Sheet1").Range("A1"), _
            Workbooks("Book2.xls").Sheets("Sheet1").Range("A1"), _
            Workbooks("Book3.xls").Sheets("Sheet1").Range("A1"), _
            Workbooks("Book4.xls").Sheets("Sheet1").Range("A1"), _
            Workbooks("Book5.xls").Sheets("Sheet1").Range("A1"))

こんな感じにセル内容を取得してから合計しても良いし、
(開いている全ブック対象)

Dim WB As Workbook, Rng() As Variant, WB2 As Workbook
For Each WB In Workbooks
  CT = CT + 1
  ReDim Preserve Rng(1 To CT)
  Rng(CT) = WB.Sheets("Sheet1").Range("A1")
Next
Set WB2 = Workbooks.Add  '新規ブック作成
WB2.Sheets(1).Range("A1").Value = Application.Sum(Rng)
MsgBox Application.Sum(Rng)
Erase Rng
Set WB2 = Nothing

ここをブック間の統合に直すとか
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=24845;id=excel

異なるブック、複数ブックと言うのが開いているのか、開いてないとするとどうやって開くのかも解りませんが、後は、ばらさんのお好きな方法をで処理すれば良いと思います。

【25410】Re:複数ブックの同名シート同セル位置の...
お礼  ばら  - 05/5/31(火) 9:17 -

引用なし
パスワード
   KAZU様

お返事が遅くなりまして申し訳ございません。
ソースまで書いていただきましてありがとうございます。
これから試してみて、またお返事させていただきます。

【25415】Re:複数ブックの同名シート同セル位置の...
お礼  ばら  - 05/5/31(火) 9:43 -

引用なし
パスワード
   Jaka様

お返事が遅くなりまして申し訳ございません。
これから試してみて、また結果をご報告させていただきます。
ありがとうございます。

9797 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free