エクセルVBAでディレクトリ内のファイル
私たちは、ディレクトリ内のすべての閉じワークブックとワークシートをループエクセルVBAでプログラムを見て、そしてディスプレイすべての名前の下になります。
Book1.xlsx、Book2.xlsx、Book3.xlsx、Book4.xlsxとBook5.xlsxをダウンロードし、それらを追加し、 “C:\テスト\”
状況:
コマンドボタンに次のコード行を追加します。
1.まず、我々は2つのString型の変数、ワークシートオブジェクトとInteger型の2つの変数を宣言します。
Dim directory As String, fileName As String, sheet As Worksheet, i As Integer, j As Integer
2.画面の更新をオフにし、画面のちらつきを避けるために。
Application.ScreenUpdating = False
3.初期化変数ディレクトリ。私たちは、最初の.xlを見つけるために、Dir関数を使用して??ファイルはこのディレクトリに保存されています。
directory = "c:\test\" fileName = Dir(directory & ".xl??")
注:(?)Dir関数は、複数の文字(*)を使用すると、単一の文字をサポートしているExcelファイルのすべての異なる種類を検索するためのワイルドカード。
4.変数fileNameには現在のディレクトリで見つかった最初のExcelファイルの名前を保持します。 do-while文を追加します。
Do While fileName <> "" Loop
ループ(5、6、7、8及び9で)次のコード行を追加します。
5.初期Integer型の変数とi行の最初の列にExcelファイルの名前を追加します。
i = i + 1 j = 2 Cells(i, 1) = fileName
6.閉じたExcelファイルからデータを抽出する(またはシート名)への簡単な方法はありません。したがって、我々は、Excelファイルを開きます。
Workbooks.Open (directory & fileName)
7.行iの他の列にExcelファイルのすべてのシート名を追加します。
For Each sheet In Workbooks(fileName).Worksheets Workbooks("files-in-a-directory.xlsm").Worksheets(1).Cells(i, j).Value = sheet.Name j = j + 1 Next sheet
8.閉じるExcelファイル。
Workbooks(fileName).Close
-
Dir関数は、特別な機能です。他のExcelファイルを取得するには、引数なしで再度、Dir関数を使用することができます。
fileName = Dir()
注:これ以上のファイル名が一致しないときに、Dir関数は長さゼロの文字列(「」)を返します。その結果、ExcelのVBAは、do-while文を残します。
(ループ外)再び更新画面上の10ターン。
Application.ScreenUpdating = True
11.テストプログラム。
結果: