• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBマクロについて)

VBマクロについて

このQ&Aのポイント
  • VBマクロを使用して0864_001.xlsから0864_009.xlsまでのファイルを順番に開いて処理する方法について教えてください。
  • マクロの実行中に「インデックスが有効範囲にありません」というエラーメッセージが表示されている場合、どのように対処すれば良いのか教えてください。
  • matome.xls内に作成したマクロが実行されない原因について教えてください。

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

  • ベストアンサー
  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.1

Workbooks("\0864_00" & CStr(i) & ".xls").Activate ↓ Workbooks("0864_00" & CStr(i) & ".xls").Activate Workbooks("\0864_00" & CStr(i) & ".xls").Close SaveChanges:=False ↓ Workbooks("0864_00" & CStr(i) & ".xls").Close SaveChanges:=False

beat_it777
質問者

お礼

ありがとうございます。 無事に実行することができました。

その他の回答 (1)

  • myRange
  • ベストアンサー率71% (339/472)
回答No.2

質問の件とは別ですが、、、 開いたブックからはデータを取得するだけですから 式はは入れないで直接そのデータを参照した方がいいでしょう。 また提示のコードでは開いたブックの式を入れるシートが特定されていません。 ということは開くブックは全てOpen時には該当シートがアクティブになっているということになりますが。。。   ま、それは置いといて、次の条件で。。 開かれるブックは全て、"Sheet3"を対象とする まとめブックの"Sheet1"のA、B列の2行目から結果を代入する '------------------------------------- Sub Test()  Dim i As Integer  For i = 1 To 9   Workbooks.Open ThisWorkbook.Path & "\0864_00" & CStr(i) & ".xls"   With Workbooks("matome.xls").Sheets("Sheet1")     .Cells(i + 1, "A") = WorksheetFunction.Max(Sheets("Sheet3").Range("$B$11:$B$172"))     .Cells(i + 1, "B") = WorksheetFunction.Max(Sheets("Sheet3").Range("$B$391:$B$398"))   End With   ActiveWorkbook.Close False  Next i End Sub '------------------------------------------- 以上です。  

beat_it777
質問者

お礼

各ファイルにシートは1つしかなかったので、シートを指定しなくとも問題なく動いていたのかもしれません。 myRangeさんのプログラムのほうがスマートに見えるので書き換えました。ありがとうございます。 初めて見る関数がいくつかあるので、それらについてよく調べてみます。