/ / VBAのディレクトリ内のファイル

Excel VBAでのディレクトリ内のファイル

以下では、 Excel VBA それ 閉じられたすべてのワークブックとワークシートをループする 〜で ディレクトリすべての名前を表示します。

Book1.xls、Book2.xls、Book3.xls、Book4.xls、Book5.xlsをダウンロードし、それらを「C:test」に追加します。

状況:

ディレクトリの例のファイル

コマンドボタンに次のコード行を追加します。

1.まず、String型の2つの変数、Worksheetオブジェクト、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関数は、複数の文字(*)と1文字(?)のワイルドカードを使用して、すべての異なるタイプの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.xls").Worksheets(1).Cells(i, j).Value = sheet.Name
    j = j + 1
Next sheet

8. Excelファイルを閉じます。

Workbooks(fileName).Close

9. Dir関数は特別な関数です。他のExcelファイルを取得するには、引数なしでDir関数を再度使用します。

fileName = Dir()

注:ファイル名が一致しなくなると、Dir関数は長さゼロの文字列( "")を返します。その結果、Excel VBAはDo Whileループを離れることになります。

10.画面の更新を再度オンにします(ループの外側)。

Application.ScreenUpdating = True

11.プログラムをテストします。

結果:

Excel VBAでのディレクトリ内のファイル

また読む: