• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:複数のエクセルファイルを順番に開く)

複数のエクセルファイルを順番に開く方法

このQ&Aのポイント
  • Excel2003、OS WindowsXPを使用し、Visual Basicに関する質問です。下記マクロを作成したのですが、ファイルを複数選択した場合に毎回開く順番がランダムになってしまいます。これをファイル名を参照して順番に開くようにしたいのです。
  • ファイル名は **-***_AAA_日付.xls です。*には数字が入り、AAAには漢字による名称が入ります。例)(1)24-002、(2)24-005、(3)24-008といった3つのファイルを開くとします。現在ですと(3)→(1)→(2)のような順番で開きますが、これを(1)→(2)→(3)のようにファイル名の数字をkeyとして順番に開きたいのです。
  • 調査した結果、ファイルを順番に開くためには、ファイル名の数字を取得し、それをソートしてから開く必要があります。具体的には、GetOpenFileNameメソッドで取得したファイル名の配列をループで処理し、ファイル名から数字部分を抽出し、それを元に配列をソートしてから順番に開くようにします。

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

  • ベストアンサー
  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.1

ソートするしかないのでは。 --- If IsArray(vntFileName) Then aryFileName = mSort(vntFileName) For i = 0 to ubound(aryFileName) - 1 Workbooks.Open aryFileName(i) Next Else Exit Sub function mSort(aryw) as variant 'ソートPG省略 mSort = ソート後 end function

123456514h
質問者

お礼

For i = 0 to ubound(aryFileName) - 1 の箇所を修正し、ソート部分で一部修正を行い動くようになりました。 これからもっと勉強していきたいと思います。 どうもありがとうございました。

123456514h
質問者

補足

ご回答ありがとうございます。 For i = 0 to ubound(aryFileName) - 1 の箇所で実行時エラー13となり型が一致しないと表示されますが、原因が分かりません。 度々すみませんが、ご教示頂けますでしょうか…。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.3

>mSort = aryw とした場合にも同じくaryFILENameはemptyとなってしまいます。 なにもせず内容を入れ替えているだけでemptyになるのは 変数の綴りがあってないのでは。 先頭にOption Explicitステートメントを付加するとか ステップ実行で追跡するとかでしょうか。 あとはソートをモジュール化せず If IsArray(vntFileName) Then 'ソートロジック For i = 0 to ubound(aryFileName) - 1 こうするか試行錯誤してください。 こういうバグを追跡することもレベルアップにつながります。

すると、全ての回答が全文表示されます。
  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.2

>aryFileName = mSort(vntFileName) ソートからの戻った時aryFileNameに配列が格納されていますか? あとソートせず function mSort(aryw as variant) as variant mSort = aryw end function とそのまま返してもエラーになりますか。

123456514h
質問者

補足

職場から質問していたため、休日に入り連絡が遅くなりすみませんでした。 >aryFileName = mSort(vntFileName) aryFILENameはemptyとなってしまいます。 又、mSort = aryw とした場合にも同じくaryFILENameはemptyとなってしまいます。 この場合、Workbooks.Open aryFileName(p)において実行時エラー9と表示されます。

すると、全ての回答が全文表示されます。

関連するQ&A