同じようなことをExcelのマクロでやりたいということも実務ではあります。
いくつかの方法が考えられますが、まずFileSystemObjectなどを使わない、Dir関数を使ったマクロをご紹介します。
▼フォルダを指定してファイル名一覧を作成するマクロ
Sub フォルダを指定してファイル名一覧を作成する()
'先頭にシートを挿入して
'指定したフォルダのファイル名一覧を作成する
Dim fld As FileDialog
Dim fp As String
Dim f As String
Dim i As Long
'フォルダを指定するダイアログを表示する
Set fld = Application.FileDialog(msoFileDialogFolderPicker)
'キャンセル時にマクロ終了
If fld.Show = 0 Then Exit Sub
'フォルダのフルパスを変数に格納
fp = fld.SelectedItems(1)
'指定されたフォルダの一つ目のファイル名を取得
f = Dir(fp & "\*")
If f = "" Then MsgBox "ファイルが存在しません。": Exit Sub
'ワークシートを先頭に挿入
Worksheets.Add Before:=Worksheets(1)
Range("A1").Value = fp
Range("A2").Value = "のファイル一覧"
Range("A4").Value = "ファイル名"
'A5セルから下にファイル名を書き出し
i = 5
Do While f <> ""
Cells(i, 1).Value = f
i = i + 1
'次のファイル名を取得
f = Dir()
Loop
MsgBox Worksheets(1).Name & "にファイル名一覧を作成しました。"
End Sub
上記のマクロを実行すると、フォルダを指定するダイアログが表示され、ファイルが存在していれば、ブックの先頭にシートを挿入して、A5セルから下に向かってファイル名一覧が作成されます。
まず
Set fld = Application.FileDialog(msoFileDialogFolderPicker)
で、フォルダを指定するモードでFileDialogを表示して、
fp = fld.SelectedItems(1)
指定されたフォルダのフルパスを変数「fp」に格納します。
Dir関数を使って
f = Dir(fp & "\*")
指定されたフォルダの一つ目のファイルを変数「f」に格納します。
Dir関数は、引数を指定せずに呼ばれると、その直前に指定されたのと同じ引数で、既にみつかっているファイルを除外したファイル名を返します。
Do While ~ Loop文で、Dir関数が値を返さなくなるまで、ループをまわして
Do While f <> ""
Cells(i, 1).Value = f
i = i + 1
'次のファイル名を取得
f = Dir()
Loop
A列にファイル名を書きだしていきます。
WINDOWS7
Windows7 Home Premium 32bit sp1日本語[ダウンロード版] ¥9,800円(税込)
Windows7 Home Premium 64bit SP1 日本語 [ダウンロード版] ¥8,600(税込)
Windows7 Professiona 32bit SP1 日本語 8,800~9,800 円 (税込)
Windows7 Professiona 64bit SP1 日本語 8,800~9,800 円 (税込)
Windows7 Ultimate 32bit SP1 日本語 [ダウンロード版] 10,800 円 (税込)
Windows7 Ultimate 64bit SP1 日本語 [ダウンロード版] 10,800 円 (税込)
OFFICE2010
Office Professional 2010 ダウンロード版 ¥10,800円(税込)
Office Personal 2010 ダウンロード版 ¥8,600(税込)
Microsoft Office for Mac Home and Business 2011 2 パック [ダウンロード版] ¥ 12,800 円(税込)
Microsoft Office for Mac Home and Student 2011 1パック [ダウンロード版]
ADOBE
Adobe Acrobat X Pro ダウンロード版(日本語版)¥10,200円(税込)
Adobe Photoshop CS5 Extended ダウンロード版(日本語版)¥12,800円(税込)
Adobe Photoshop CS6 Extended ダウンロード版(日本語版)¥22,800円(税込)