- ベストアンサー
VBマクロについて
- VBマクロを使用して0864_001.xlsから0864_009.xlsまでのファイルを順番に開いて処理する方法について教えてください。
- マクロの実行中に「インデックスが有効範囲にありません」というエラーメッセージが表示されている場合、どのように対処すれば良いのか教えてください。
- matome.xls内に作成したマクロが実行されない原因について教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
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
その他の回答 (1)
- myRange
- ベストアンサー率71% (339/472)
質問の件とは別ですが、、、 開いたブックからはデータを取得するだけですから 式はは入れないで直接そのデータを参照した方がいいでしょう。 また提示のコードでは開いたブックの式を入れるシートが特定されていません。 ということは開くブックは全て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 '------------------------------------------- 以上です。
お礼
各ファイルにシートは1つしかなかったので、シートを指定しなくとも問題なく動いていたのかもしれません。 myRangeさんのプログラムのほうがスマートに見えるので書き換えました。ありがとうございます。 初めて見る関数がいくつかあるので、それらについてよく調べてみます。
お礼
ありがとうございます。 無事に実行することができました。