hiro-yukioのサイトより、プログラム「フォルダー内のファイルを順番に開く .xlsm」とサンプルデータ「ファイル1.xlsx」~「ファイル3.xlsx」をダウンロードし、下図の様に準備して下さい。次にプログラム表示画面の設定に進みます。
プログラム表示画面に緑枠の「イミディエイトウィンドウ」を出します。「表示タブ」→「イミディエイトウィンドウ」をクリックします。(下図)
Module 1の2番目のプログラム、「Sub ファイルを順番に開く最小限のプログラム()」からご説明します。
上図において、特定のフォルダーに入れたファイル(ブック)を順番に拾い出す命令文は赤枠の部分になります。
対象ブック名 = Dir(対象ディレクトリ名 & "\*.xlsx")
Do While 対象ブック名 <> ""
(ここにさせたい処理を記述)
対象ブック名 = Dir
Loop
なかなか不思議なループと私は思うのですが、この記述で「対象ディレクトリ名」に入っているフォルダー、(今回の場合は「ファイルを順番に開くフォルダ」フォルダー)に入っている、拡張子が「xlsx」のファイル(ブック)を順番に拾い出してくれます。
次に、拾い出したファイルを開く命令文はオレンジ枠の部分になります。
Dim 対象ブック As Workbook
Set 対象ブック = Workbooks.Open(対象ディレクトリ名 & "\" & 対象ブック名)
With 対象ブック.Worksheets(1)
(ここにさせたい処理を記述)
End With
対象ブック.Close
ファイルを拾い出す命令文と開く命令文を組み合わせて、「拾っては開き」をファイル数繰り返します。
実際にプログラム、「Sub ファイルを順番に開く最小限のプログラム()」を実行してみましょう。次に進みます。
緑枠の、「イミディエイトウィンドウ」に
ファイル名= ファイル1.xlsx
ファイル名= ファイル2.xlsx
ファイル名= ファイル3.xlsx
と表示されました。これは、
「Debug.Print "ファイル名= " & 対象ブック名」と言う命令文を記述してプログラムの動作を確認しているからです。
本日はここまでです。明日は1番目のプログラムを実際に実行し、ファイル名と各ファイルのA1セル内の値を表示してみます。お楽しみに。
読者の方へ。過去の記事をご覧になられていて、「画像」が上手く表示されない場合は、「hiro-yukioのサイト」の「過去のブログ記事」フォルダーにPDFで保存しましたのでこちらでご覧下さい。


