●詳細●
サンプルでは、”Book1.xls”というExcelブックが保存されている
フォルダ内のブック名をすべて”Book1.xls”のA列に表示します。
まずは、カレントフォルダを”Book1.xls”のあるフォルダに変更します。
カレントフォルダ内のExcelブック名をDir関数を使って取得し、
”Book1.xls”のA列に表示します。
ブック名の取得が終了したら、メッセージボックスにカレントフォルダ内に何個の
ブックがあるか表示します。
●準備●
* ”Book1.xls”に標準モジュールを挿入して、サンプルを貼り付けて
保存してください(閉じないでください。)
カレントフォルダと”Book1.xls”のフォルダを変えておいてサンプルを
実行すると、カレントフォルダが”Book1.xls”のフォルダに変更された
ことが確認できます。
[ツール]メニューの[オプション][全般]の[カレントフォルダ名]で、カレントフォ
ルダを変更することができます。
●サンプル●
Sub sample()
Dim myPath As String
Dim myFName As String
Dim FCnt As Integer
'<カレントフォルダを確認します。>
MsgBox CurDir()←(1)
'<Book1をアクティブにしてフォルダ名を取得します。>
Workbooks("Book1.xls").Activate
myPath = ActiveWorkbook.Path
MsgBox myPath
'<現在アクティブなブックのフォルダに変更します。>
ChDir myPath ←(2)
'<取得ブック数をカウントするための変数を初期化します。>
FCnt = 0
'<カレントフォルダ内の最初のExcelブックを取得します。>
myFName = Dir("*.xls") ←(3)
'<Excelブックが取得できた場合。>
If myFName <> "" Then
'<取得ブック数をカウント>
FCnt = FCnt + 1
'<取得したブック名をA列にセットします。>
Cells(FCnt, 1).Value = myFName
'<1件目以降のブックを取得します。>
Do ←(4)
'<次のブックを取得します。>
myFName = Dir()
'<取得できた場合。>
If myFName <> "" Then
'<取得したブック名をA列にセットします。>
FCnt = FCnt + 1
Sheets("Sheet1").Cells(FCnt,1).Value = myFName
Else
'<ブック名の取得が終了したので繰り返し処理を抜けます。>
Exit Do
End If
Loop
End If
MsgBox "「" & myPath & "」には、" & FCnt & "個のファイルがあります。"
End Sub
●補足説明●
(1)「CurDir」関数は、現在のパスを返します。
(2)「ChDir」ステートメントは、現在のフォルダを変更します。
(3)「Dir」関数は、指定したファイル属性と一致するファイル名を返します。
<構文>
Dir[Pathname,Attributes]
Pathname:省略可能です。ファイル名またはフォルダ名を指定します。
Attributes:省略可能です。ファイルの属性を定数で指定します。
(定数)
vbNormal 標準ファイル
vbHidden 隠しファイル
vbSystem システム ファイル
vbVolume ボリューム ラベル。
この値を指定すると、すべての属性は無効になります。
vbDirectory フォルダ
複数のファイルを指定するための "*"
(アスタリスク) および "?" (疑問符)のワイルドカード文字を使用できます。
「Dir」関数は、指定したファイル属性と一致する最初のファイル名を返します。
それ以外の一致するファイル名を取得するには、引数を指定せずに再び「Dir」
関数を呼び出します。
(4)「Do〜Loop」ステートメントは、処理を繰り返し実行します。処理から
抜け出すには、「Exit Do」
|