エクセルのVBAあまり知られていない使い方を幾つか紹介してみたいと思います。

第一弾は Dir関数

過去にも幾度か紹介しましたが、整理しておきます。

使い方 例1 ファイルの有無

変数=Dir(フォルダーへのパス \ ファイル名)

ファイルが存在すれば 変数には、ファイル名

なければ 空白になります。

 

使い方 例2 ファイル名の一覧

変数=Dir(フォルダーへのパス \ ファイル名) 最初に見つかったファイル名

変数=Dir()                      次に見つかった ファイル名

変数=Dir()                      次に見つかった ファイル名

・・・

全てのファイル名の検索が終了したら     空白

になります。

 

実例 Myピクチャーのフォルダ内にある写真(jpegファイル)のファイル名の一覧の作成

1、新規のエクセルファイルを作成、シート上に ボタンを配置

2、以下を借りつけて閉じる。

Sub ボタン1_Click()
Dim buf As String
buf = Dir(ThisWorkbook.Path & "\" & "*.jpg")
cnt = 5
Do While buf <> ""
Range("B" & cnt).Value = buf
buf = Dir()
cnt = cnt + 1
Loop
End Sub
3、自身のパソコンのマイピクチャにで保存します。
  保存する際には、マクロ有効(Xlsm)です。
 
ボタンをクリックして、A列5行目以下に、jpegファイルの一覧が表示されればOKです。
 
実例 その2、ファイル名と作成日(撮影日)の一覧
Dir関数では、ファイル名しか情報がありませんので
Windowsの機能で Scripting.FileSystemObject を使います。
 
Sub ボタン2_Click()
Dim buf As String
Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
buf = Dir(ThisWorkbook.Path & "\" & "*.jpg")
cnt = 5
Do While buf <> ""
Range("A" & cnt).Value = buf
Range("B" & cnt).Value = FSO.GetFile(ThisWorkbook.Path & "\" & buf).DateCreated
buf = Dir()
cnt = cnt + 1
Loop
End Sub
を実行したら、B列にファイルの作成日が表示されます。
GetFile(ThisWorkbook.Path & "\" & buf).DateCreated の
DateCreated が作成日です。
プロパティ
Attributes  ファイルの属性を設定します
DateCreated  ファイルが作成された日付と時刻を返します
DateLastAccessed  ファイルが最後にアクセスされたときの日付と時刻を返します
DateLastModified  ファイルが最後に更新されたときの日付と時刻を返します
Drive  ファイルが存在するドライブの名前を返します
Name  ファイルの名前を返します
ParentFolder  ファイルが存在するフォルダを返します
Path  ファイルのパスを返します
ShortName  ファイルの8.3形式の名前を返します
ShortPath  ファイルの8.3形式のパスを返します
Size  ファイルのサイズを返します
Type
 ファイルの種類を返します
が取得できます。
このファイルは次の投稿でも使用しますので、保存しておいてください。