フォルダ内のファイル名の一覧表を作成する
Webのディレクションをやる時に、リニューアル前のサイトのデータを一覧にしたり、いただいた原稿ファイルを一覧にしたり、Webサーバー上にしろ、ローカルにしろ、特定のフォルダ内のファイルを一覧表にする作業というのは、結構な頻度であるのでメモ。
※会社ではWindowsを使用してるので、Windowsでの作業を前提としている。
※会社では、ファイルサーバーにフォルダ管理されているだけで、git管理はされていない。
1.一番お手軽な方法
エクスプローラーで選択したファイルのパスを取得する方法
ファイルが多くなく、サブフォルダの中身までは不要の場合
ファイル名を取得したいフォルダを開く
ファイルを選択して、「shift」キーを押しながら右クリック
「パスをコピー」をクリック
Excelにペースト
2.コマンドプロンプトを使う方法
ファイル名を取得したいフォルダを開く
アドレスバーに「cmd」と入力して、Enter
コマンドプロンプト(いわゆる黒い画面)が開くので、「dir /b | clip」と入力してEnter
ファイル名(フォルダ名も含む)がクリップボードにコピーされるので、Excelにペースト。
コマンドプロンプトは「exit」で終了させる。
C:\Users\X\example\path> dir /b | clip
C:\Users\X\example\path> exit
<ネットワーク上の共有フォルダーの場合>
ファイル名を取得したいフォルダがネットワーク上にある場合、コマンドプロンプトはUNCパスをサポートしていないため、アドレスバーに「cmd」と入力しても、アクセスできない。
ネットワーク上の共有フォルダーをZドライブなどに割り当てて、アクセスする必要がある。
ファイル名を取得したいフォルダを開く。
アドレスバーに「cmd」と入力して、Enter。
コマンドプロンプト(いわゆる黒い画面)が開くが、ネットワーク上の共有フォルダにはアクセスできず、「C:\Windows>」にアクセスした状態。
「pushd 」の後にファイル名を取得したいフォルダのパス(例:\\192.0.2.0\example\path)を入力してEnter。「192.0.2.0」がZドライブ等に割り当てられ、「C:\Windows>」から「Z:\example\path>」に移動する。
「dir /b | clip」と入力してEnter。
ファイル名(フォルダ名も含む)がクリップボードにコピーされるので、Excelにペースト。
コマンドプロンプトは「popd」でドライブの割当を解除してから、「exit」で終了させる。
C:\Windows> pushd \\192.0.2.0\example\path
Z:\example\path> dir /b | clip
Z:\example\path> popd
C:\Windows> exit
おまけメモ:
例示用に定められているIPアドレス
192.0.2.0/24
198.51.100.0/24
203.0.113.0/24
3.Excel VBAを使用する
サブフォルダも含めて一覧表を作成したい場合は、Excel VBAでマクロを作成しておくと、使い回せるのでよい。
VBAはこちらのサイトのサンプルコードを使わせていただきました。
エク短
【Excel VBA】サブフォルダを含むファイル名・パスを取得する方法!拡張子削除も対応!
サブフォルダをわかりやすくしたかったので、サブフォルダ名とパスを取得したセルは、塗りつぶしで色をつけるようにしました。
最初にセルの値をクリアする時に、塗りつぶしもクリアします。
Range("A5:B10000").Interior.ColorIndex = xlNone
の部分です。
ファイル名取得プロシージャの
Range(Cells(intIchi, 1), Cells(intIchi, 2)).Interior.Color = RGB(255,255,102)
の部分が、サブフォルダ名・パスに色を付けるコードです。
色はRGBで薄い黄色に設定しています。
Sub サブフォルダ含むファイル名取得()
Dim intIchi As Integer
Dim strFolderpass As String
intIchi = 5
strFolderpass = Range("B1").Value
Range("A5:B10000").Clear
Range("A5:B10000").Interior.ColorIndex = xlNone
Call ファイル名取得プロシージャ(strFolderpass, intIchi)
End Sub
Sub ファイル名取得プロシージャ(strFolderpass As String, intIchi As Integer)
Dim objfFSO As Object
Dim objFiles As Object
Dim objFile As Object
Dim objSubFolders As Object
Dim objSubFolder As Object
If strFolderpass = "" Then
MsgBox "対象フォルダのパスがありません。パスを入力してください。"
Else
Set objfFSO = CreateObject("Scripting.FileSystemObject")
Set objFiles = objfFSO.GetFolder(strFolderpass).Files
For Each objFile In objFiles
Cells(intIchi, 1) = objFile.Name
Cells(intIchi, 2) = objFile.Path
intIchi = intIchi + 1
Next objFile
Set objSubFolders = objfFSO.GetFolder(strFolderpass).SubFolders
For Each objSubFolder In objSubFolders
If objSubFolder.Name <> "" Then
Cells(intIchi, 1) = objSubFolder.Name
Cells(intIchi, 2) = objSubFolder.Path
Range(Cells(intIchi, 1), Cells(intIchi, 2)).Interior.Color = RGB(255, 255, 102)
intIchi = intIchi + 1
Call ファイル名取得プロシージャ(objSubFolder.Path, intIchi)
End If
Next objSubFolder
End If
Set objfFSO = Nothing
Set objFiles = Nothing
Set objFile = Nothing
Set objSubFolders = Nothing
Set objSubFolder = Nothing
End Sub
<VBAの編集方法>
Excelに「開発」タブが表示されていない場合は、「開発」タブを表示します。
Excel上部のリボンを右クリック。
「リボンのユーザー設定」をクリック。
右の「リボンのユーザー設定」の「メインタブ」の中の「開発」にチェックを入れて、「OK」
これで、「開発」タブが表示されます。
マクロを使えるファイルとして保存します。
「ファイル」>「名前を付けて保存」
「Excel マクロ有効ブック(*.xlsm)」で保存する。
Visual Basic Editorを起動します。
「開発」>「Visual Basic」をクリックして、「Visual Basic Editor」を起動。
左側のツリー表示の中の「標準モジュール」を選択。
上部の「挿入」>「標準モジュール」をクリック。
右側に新しいモジュールの編集画面が開くので、上記のコードを入力。
「F5」キーで実行して、エラーにならなかったら上書き保存。
<ボタンを付けてマクロを割り当てる>
誰かの作業が少しでも楽に進められるように、汎用的に使用できるExcelは社内で共有しているので、誰でも使いやすいように、ボタンでポチッと動かせるようにします。
「開発」をクリック。
「挿入」>「フォームコントロール」の「ボタン(フォームコントロール)」をクリック。
「+」カーソルになるので、配置したい場所に配置したい大きさでドラッグ。
「マクロの登録画面」で作成したマクロ名「サブフォルダ含むファイル名取得」が表示されるので、選択。
「マクロの保存先」は作成したExcelを選択。
「OK」をクリック。
配置されたボタンのボタン名をわかりやすく変更。
※ボタンを選択できない場合は、「開発」>「デザインモード」をクリックすると、選択してボタン名を変更できるようになります。
この記事が気に入ったらサポートをしてみませんか?