2022-10-06

VBA、ワークブックの配列(?)を変数に代入する方法を教えて頂きたい。

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はインデックスまわりややこしかった気がするから自信ないけど あとは他の増田が言...

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん