フォルダ内のファイル名をエクセルに一覧表示するマクロ

コンピューターのお仕事
スポンサーリンク

こんなお悩みをお持ちではないですか?

  • フォルダ内のデータを一覧にして整理したいけど時間が足りない
  • データの内容を報告したいけど手作業でやるには数が多すぎる
  • 時間をかけずにフォルダの内容をエクセルにまとめたい

フォルダ内のファイルをエクセルに書き出す作業があったので、マクロを作りました。

このマクロは指定のセルにファイルのパスを入力すると、フォルダ内のファイル名を一覧にして書き出します。

このような作業はマクロで行うと一瞬ですが、手作業でおこなうとかなり時間がかかるます。

スクリプトとファイルへの登録方法を書きましたので、よかったら使ってみてください。

スポンサーリンク

スクリプトの登録方法

このスクリプトをエクセルファイルに登録するには次のような手順で行います。

  • 新規のエクセルファイルを開く
  • 当サイトのスクリプトをコピー
  • エクセルからVBエディタを開く
  • スクリプトを貼り付け
  • マクロ有効の保存形式で名前を付けて保存

スクリプトをコピー

public Sub get_fileName()
'エラー処理構文--------------------
On Error GoTo get_fileName_err
'変数宣言-------------------------
    Dim f_name As String
    Dim d_path As String
    Dim i As Integer
  'ディレクトリ名の空白チェック----------
    If (Len(Sheet1.Cells(2, 3)) < 0) Then
        MsgBox ("ディレクトリ名が空白です")
        Exit Sub
    End If
    '//-----------------------------------
    
    i = 5 'シートの5行目から記入
    d_path = Sheet1.Cells(2, 3)
    
    f_name = Dir(d_path & "\*")
  'f_name = Dir(d_path & "\*", 16)
'"*.jpg"や"*.xls"とすると特定の拡張子のみ表示させられる。
    
    Do While Len(f_name) > 0
        'Debug.Print f_name
        'Sheet1.Cells(i, 2) = d_path & "\" & f_name
        Sheet1.Cells(i, 2) = f_name
        f_name = Dir()
        i = i + 1
    Loop
    'Debug.Print "The End..."
'エラー処理構文---------------------------------
get_fileName_exit:
    Exit Sub
   
get_fileName_err:
    MsgBox (Err.Number & " " & Err.Description)
    Resume get_fileName_exit
'//---------------------------------------
End Sub

エクセルからVBエディタを開く

VBエディタとは「エクセルVBA」というプログラムを書くためのツールのことで、当サイトで公開しているスクリプトやユーザー定義関数はこのツールから登録します。

開くにはいくつか方法がありますが、最も簡単な開き方はエクセルが起動した状態でキーボードのAltキーとF11キーを同時に押す方法です。

Nvidiaのグラフィックボードを使っているパソコンではAlt+F11のショートカットが別のアクションに割り振られていてVBエディタが開かない場合があります

その場合は下記の方法でVBエディタを開いてください。

Excel2007,Excel2010以降

Excel2007,Excel2010以降 のバージョンでVBエディタを開くには下記の通りです。

リボンの「開発」→「Visual Basic」

「開発」リボンが見当たらない場合は「ファイル」→「その他」→「オプション」→「リボンのユーザー設定」から「開発」の項目をチェックすれば現れます。

Excel2003

Excel2003のバージョンでVBエディタを開くには下記の通りです。

「ツール」→「マクロ」→「Visual Basic Editor」

vbエディタにスクリプトを貼り付け

VBエディタが開いたら、左側の「Sheet1」をダブルクリックすると中央に空白のエリアが表示されますので、そこにコピーしたスクリプトを貼り付けます。

スクリプトを貼り付けたら、右上の×ボタンをクリックしてVBエディタはいったん終了します。

マクロが有効な保存形式で名前をつけて保存

エクセルファイルの保存形式は次の4つですが、マクロ(VBA)を保存できるのはxlsmとxlsbの2つですが、特にこだわりがなければより新しいXLM形式のxlsmで保存しましょう。

  • xls (マクロ無効)
  • xlsx (マクロ無効)
  • xlsb (マクロ有効 バイナリ形式)
  • xlsm (マクロ有効 XLM形式)

スクリプトの実行方法

このスクリプトは、指定したフォルダのファイル名一覧をエクセルシートに書き出すものですが、対象のフォルダはエクセルシートのセルC2に絶対パスで記載します。

スクリプトを実行するにはいくつか方法がありますが、ここではエクセルシートに実行ボタンを配置する方法と、VBエディタから直接実行する2つの方法を解説します。

ボタンを作って実行

ボタンを作るには「開発」→「挿入」→「ActiveXコントロール」からコマンドボタンを選択して好きな位置に配置します。

作ったコマンドボタンを右クリックして「コードの表示」を選択するとVBエディタが開くので、下記の画像を参考にして、Private Sub Comma…とEnd Subの間に「Call Sheet1.get_fileName」と記述してVBエディタを閉じます。

エクセルシートに戻り、「開発」→「デザインモード」を押すとコマンドボタンが機能するのでボタンをクリックすると、セルのC2でしていしたファイル名が一覧で表示されます。

イミディエイトウインドウから実行

コマンドボタンを配置するのが面倒という場合には、VBエディタのイミディエイトウインドウに下記のように記述するとボタンを押したときと同様に処理が実行されます。

このスクリプトの注意点

このスクリプトはそのままコピペして使っていただけますが、初期の状態では次のような制約があります。

フォルダを無視する使用になっている

このスクリプトはファイル名のみを表示させます。

クリプト18行目 の “\*”を”*.jpg”や”*.xls”と書き換えることで、特定の拡張子をえらんで表示させることも可能です。

     f_name = Dir(d_path & "\*")
  'f_name = Dir(d_path & "\*", 16)
'"*.jpg"や"*.xls"とすると特定の拡張子のみ表示させられる。

サブフォルダを一覧に表示させるには

エクセルの一覧に指定フォルダ内のサブフォルダを表示したい場合はスクリプトを下記のように修正します。

スクリプト18行目をコメントアウトして、19行目のコメントアウトを外せばサブフォルダ名も一覧に表示します。

 'f_name = Dir(d_path & "\*") 
f_name = Dir(d_path & "\*", 16)

コメントアウトとは?

多くのプログラミング言語では、コードの意味を記述して置けるコメント機能が備わっていて、特定の記号を入力するとプログラムコードとは認識されずに文章(コメント)として扱われます。

エクセルVBAのコメント記号は ’ (シングルクオート)です。

まとめ

今回は指定のフォルダ内のファイル名をエクセルファイルに一覧で表示するマクロをエクセルが苦手という人でも使えるように解説しました。

フォルダの内容を説明するときやチェックするのに便利かと思います。

スクリプトの初期状態では、フォルダ内のファイルのみを表示する仕様ですが、一部を修正すればサブフォルダも表示します。

人間が行うと何時間もかかる作業もマクロを使えば一瞬で終わりますので、マクロ(エクセルVBA)をどんどん活用しましょう。

コメント

タイトルとURLをコピーしました