Sub test3()
Dim ws1 as Worksheet
Dim ws2 as Worksheet
Dim Filename as Variant
Dim h as Long
Filename = Application.GetOpenFilename("xlsmファイル,.xlsm", Multiselect := True)
For h = 1 to 10
Workbooks.open(Filename(h))
Set ws1=Workbooks(Filename(h)).Worksheets(1)
Set ws2= Workbooks("excel勉強用.xlsm").Worksheets("Sheet1")
Workbooks(Filename(h)).close
next h
End Sub
これでインデックスが有効範囲内にありませんのエラーが出ちゃう。(Set ws1 = Workbooks(Filename(h)).Worksheets(1)のところ)
Workbooks.open(filename(h))でファイルを開くこと自体は確認できた。
GetOpenFilenameをそもそもあんまよくわかってないのに使ってるのが問題ですかね?
例えば020101.xlsx,020102.xlsx,020103.xlsx....020110.xlsxという10個のブックをGetOpenfilenameメソッド(?)で選択したとしたら、
変数Filenameには上記10の配列が入っていて、Filename(1)で020101.xlsxを呼び出すことができるのかな〜って思ったけど違うっすかね?
△△△<教えてあげないよ!ジャン♪という話
わからなければわかるところまで分解しろと言う話
Application.GetOpenFilename()の戻り値がVariant の配列なのであれば、for文は0から始めるべきなんじゃね? VBAはインデックスまわりややこしかった気がするから自信ないけど あとは他の増田が言...