VBAを使ってファイル名を取得する方法【 取得したファイル名を一覧表に表示させるVBAを紹介 】

豆父ちゃん
こんな要望に応えるVBAを紹介します。
取得したファイル名を一覧表にすることで、いろんな作業の効率化に応用するができます。
- ファイルの更新日時を取得し、使用頻度の少ないファイルを把握する
- ファイル名をまとめて変更する
- 使用頻度の少ないファイルをまとめて削除する
ファイル名を取得するVBAはサーバー内のファイルやフォルダの整理整頓作業でよく利用されます。私の会社は転勤が多いためサーバー内の整理整頓作業がなかなか進まない状況でした。このファイル名を取得するVBAを利用すれば、現状サーバー内のデータがどのように保存されているか!を一瞬で一覧表にすることができます。下記の記事では、エクセルを使ってファイルやフォルダを整理整頓する方法について詳しく紹介しています。
サーバーの整理整頓を効率よく行う方法に興味のある方は合わせてチェックしてみてください。
目次
エクセルを使ってファイルを操作するVBAとは
下記の動画でファイル名を一覧表にするVBAと一覧表からファイル名を変更するVBAについてサンプルを使って紹介しています。
動画で紹介されている「ファイル名を一覧表にするVBA」と「一覧表からファイル名を変更するVBA」は下記のサイトからダウンロードすることが可能です。VBAを使ってサーバー内のデータ整理を行いたい!と考えている方は是非利用してみてください。
エクセルのファイル名を一覧表にするVBA
ファイルの種類(拡張子の違い)の情報を元に一覧表を作成します。まずはエクセル形式のファイル名を一覧表にするVBAを紹介します。
サンプルVBA
1 | Sub データ名エクセル取得() |
2 | gyo = Cells(Rows.Count, 1).End(xlUp).Row |
3 | Range(Cells(4, 1), Cells(gyo + 1, 1)).ClearContents |
4 | Dim FP As String |
5 | FP = Cells(2, 4) |
6 | FoName = Dir(FP & “\*.xls*") |
7 | Do Until FoName = “" |
8 | gyo = Cells(Rows.Count, 1).End(xlUp).Row |
9 | Cells(gyo + 1, 1) = FoName |
10 | FoName = Dir |
11 | Loop |
12 | End Sub |
サンプルVBAはコピーしてそのまま使うことができます。是非使ってみてください。
エクセルファイル名を一覧表にするVBAの使い方
1.名前を取得するファイルが保存されているフォルダを確認
フォルダの中にはエクセルファイル、ワードファイル、テキストファイルが保存されています。拡張子が異なっていても名前を取得できるか確認するために、ワードファイルはわざと拡張子が異なる形式にしています。
2.フォルダの場所をD2セルに記入
3.名前を取得するVBAを実行
データ名取得(エクセル)というボタンにサンプルVBAが登録されています。ボタンを押してVBAを実行すると、フォルダ内にあるエクセル形式のファイル名を取得し一覧表にすることができます。
実行結果
指定したファルダ内にある全てのエクセルファイルの名前を一覧表にすることができました。エクセルファイルの中で拡張子が異なっていても問題なく名前を取得することができます。
ワードのファイル名を一覧表にするVBA
ワードファイルの名前を一覧表にするVBAを紹介します。VBAを実行したとき拡張子の違いがどのような結果になるのか!を確認するために、フォルダ内には、拡張子が(.docx)、(.doc)、(.docm)の3種類のワードが保存されています。
サンプルVBA
1 | Sub データ名ワード取得() |
2 | gyo = Cells(Rows.Count, 1).End(xlUp).Row |
3 | Range(Cells(4, 1), Cells(gyo + 1, 1)).ClearContents |
4 | Dim FP As String |
5 | FP = Cells(2, 4) |
6 | FoName = Dir(FP & “\*.doc*") |
7 | Do Until FoName = “" |
8 | gyo = Cells(Rows.Count, 1).End(xlUp).Row |
9 | Cells(gyo + 1, 1) = FoName |
10 | FoName = Dir |
11 | Loop |
12 | End Sub |
サンプルVBAはコピーしてそのまま使うことができます。是非使ってみてください。
ワードのファイル名を一覧にするVBAの使い方
1.名前を取得したいファイルがあるフォルダを確認
2.フォルダの場所をD2セルに記入
3.名前を取得するVBAを実行
データ名取得(ワード)というボタンにサンプルVBAが登録されています。ボタンを押してVBAを実行すると、フォルダ内にあるワード形式のファイル名を取得し一覧表にすることができます。
実行結果
拡張子の種類が異なっていても、全てのワードファイルの名前を一覧表にすることができました。
もし、拡張子(.docm)のファイル名だけを取得したい場合、サンプルVBAの6行目に記載されている「.doc」→「.docm」に変更すれば可能となります。VBAの中身を少し変えるだけでいろんなことが可能です。私の職場では、マクロが設定されたワードファイルの抽出にこのVBAを使っています。
テキストファイルを一覧表にするVBA
テキストファイルの名前を一覧表にするVBAを紹介します。
サンプルVBA
1 | Sub データ名テキスト取得() |
2 | gyo = Cells(Rows.Count, 1).End(xlUp).Row |
3 | Range(Cells(4, 1), Cells(gyo + 1, 1)).ClearContents |
4 | Dim FP As String |
5 | FP = Cells(2, 4) |
6 | FoName = Dir(FP & “\*.txt*") |
7 | Do Until FoName = “" |
8 | gyo = Cells(Rows.Count, 1).End(xlUp).Row |
9 | Cells(gyo + 1, 1) = FoName |
10 | FoName = Dir |
11 | Loop |
12 | End Sub |
テキストファイルを一覧表にするVBAの使い方
1.名前を取得したいファイルがあるフォルダを確認
2.フォルダの場所をD2セルに記入
3.名前を取得するVBAを実行
データ名取得(テキスト)というボタンにサンプルVBAが登録されています。ボタンを押してVBAを実行すると、フォルダ内にあるテキスト形式のファイル名を取得し一覧表にすることができます。
実行結果
指定したファルダ内にある全てのテキストファイルの名前を一覧表にすることができました。
ファイルの情報を一覧表にするVBA
ファイルの情報を一覧表にするVBAを紹介します。上記で紹介したファイル名を一覧表にするVBAに加えファイルの情報を一覧表にするVBAを設定すれば、フォルダ内のデータ保存状態を一目で確認することができます。
そもそも「ファイルの情報」とはどういうものかというと、ファイルのプロパティで確認することができる「作成日時」、「更新日時」、「アクセス日時」のことです。
この情報を一覧表にすることで、現在使われていないファイルやいつファイルが更新されたのかを一目で確認することができます。私の職場では、この一覧表をもとに5年以上アクセスのないファイルをピックアップして削除する!というルールを定め、データの整理整頓作業を行っています。
サンプルVBA
1 | Sub データ更新日取得() |
2 | Dim FP As String |
3 | FP = Cells(2, 4) |
4 | Dim fl As FileSystemObject |
5 | Set fl = New FileSystemObject |
6 | Dim Flp As File |
7 | Dim Pa As String |
8 | gyo = Cells(Rows.Count, 1).End(xlUp).Row |
9 | For i = 4 To gyo |
10 | Pa = Cells(i, 1) |
11 | Set Flp = fl.GetFile(FP & “\" & Pa) |
12 | Cells(i, 2) = Flp.DateCreated |
13 | Cells(i, 3) = Flp.DateLastModified |
14 | Cells(i, 4) = Flp.DateLastAccessed |
15 | Next |
16 | End Sub |
ファイルの情報を一覧表にするVBAの使い方
1.上記で紹介しているファイル名を取得して一覧表にするVBAを使って一覧表を作成
2.ファイル情報を取得するVBAを実行
実行結果
大量にあるファイルの情報を一つ一つ手作業でまとめていては時間がいくらあっても足りません。VBAを使えば大量にあるファイル情報を一瞬で一覧表にすることが可能。このVBAはいろんな作業の効率化に応用することができます。
ファイルの情報を一覧表にするVBAは下記のサイトからダウンロードすることが可能です。ほかにも「ファイル名を一覧表にするVBA」や「一覧表からファイル名を変更するVBA」など、この記事では紹介しきれなかったVBAが設定されています。気になる方は是非ダウンロードしてみてください。
ファイル名を取得するVBAを使ってデータの整理整頓を行う
大人数で共用のサーバーを使って仕事をしていると、サーバー内にいろんなフォルダやファイルが増えていきますよね。
- 2018年勤務表
- 2019年写真フォルダ
- 2020年スケジュール表
- 2020年伝票フォルダ
私の職場では、このようなフォルダが何百個とあります。転勤が多い仕事のため赴任した職場で古いフォルダやファイルが重要なのか、削除していいのか判断できず、ずっと残り続ける!という状況になっています。
古いフォルダやファイルが何百個もあるサーバーの整理整頓をするときに活躍するのが、この記事で紹介した「ファイル名を一覧表にするVBA」と「ファイルの情報を一覧表にするVBA」です。
サーバーの整理整頓業務
ファルダ内のファイル名、更新日、アクセス日一覧表にする。その一覧表を職場全員に回覧して不要なファイルを削除してよいか確認をとる。
実際に私は下記のような資料を作成し、サーバー内のデータ整理を行っています。
このような資料を作成するにはかなりの時間と労力が必要になりますが、VBAを使えばあっという間に作ることができます。
今回はエクセルファイルやワードファイルの名前の取得する方法を中心に紹介しました。下記の記事ではフォルダ名を取得する方法を詳しく紹介しています。「ファイル名を取得するVBA」と「フォルダ名を取得するVBA」を組み合わせれば、データ整理作業の効率をさらにアップさせることができます。
サーバー内のデータ整理を効率よくやりたい!というかたは合わせてチェックしてみてください。
VBA初心者が効率化マクロを導入する方法
VBAなんて扱ったことないけどエクセル作業を自動化するマクロを導入したい!
このような問題を抱えながら日々のエクセル業務をこなしている方がおおくいらっしゃるのではないでしょうか。
こんな問題を解決する方法がこちら
- マクロの開発を外注に依頼する
- マクロが設定されたエクセルファイルをダウンロードする
- 参考書やネットでVBAスキルを身に付ける
VBAの勉強を始める前は上記の方法で効率化マクロを導入していました。
完成されたマクロを使ってエクセル業務を処理する
↓
作業効率が2倍以上アップ!!
↓
便利すぎて自分でもマクロを設定したいと考え始める
↓
参考書やネットの情報でVBAスキルを身に付ける
↓
マクロ開発を代行できる程のスキルを習得
VBAは
他のプログラミングに比べて参考書やネットで紹介されている情報量が多いので初心者でも導入しやすい
という特徴があります。
毎日のルーティーン作業にうんざりしている、だれでもできる単純作業に時間を費やしている、という方はあなたに合った方法でVBAを導入しちゃいましょう。
マクロの開発を外注に依頼する
マクロの開発を外注に依頼する導入方法は
VBAを全く扱えない方でもエクセル作業を自動化できる最も簡単な方法
です。
「こんなエクセル作業を自動化したい」「作った資料を自動的にPDFで保存したい」「決まった様式に写真を自動で貼り付けたい」
こんな感じで実現したい内容を依頼するだけで業務内容に合ったマクロを開発してくれます。

ガッツポーズの人
デメリットは、費用がかかることだけ。
開発内容、依頼先によってかかる費用は大きく異なります。
私が会社員の頃利用していた業者さんは1マクロあたり2万円~3万円の費用がかかりました。

疑問がある人
ちなみに、マメBlogでもエクセルマクロ開発代行サービスを承っています。
開発内容の確認、VBAコードの設定、動作確認後の調整、など全ての工程を私(マメ父ちゃん)が行っているので、
費用が安い!スピード納期!!
でやらせてもらっています。
ほとんど独学で身に付けたVBAスキルなので、内容によっては開発できないこともあるのでご了承ください。
ご相談、見積もり依頼は完全無料ですので気になる方は下記のリンクよりお問合せ下さい。
マクロが設定されたエクセルファイルをダウンロードする
VBA初心者でも『マクロが設定されたエクセルファイルをダウンロード』ですぐにエクセル作業を自動化することができます。
たとえば、
A4用紙に写真を貼り付けてコメントを入力する作業を自動化したい!という場合、
『写真を貼り付けるマクロ』が設定されたエクセルファイルをダウンロードすれば問題解決です。
実際に、『写真を貼り付けるマクロ』をダウンロードして使っている様子がこちら

ガッツポーズの人
『マクロが設定されたエクセルファイルをダウンロード』する導入方法は、
VBA初心者でもマクロを導入できる、費用が安い、
というメリットがあります。
しかし
VBAに関する情報が多く公開されているとはいえ、ネット上で想定するマクロは見つけることが難しい
というデメリットもあります。

ガッツポーズの人
個人ブログやファイルを販売できるサイト「note」や「Tips」ではいろんなマクロの情報が掲載されているので是非参考にしてみてください。
今までマメBlogで受注した効率化マクロを下記のnoteで掲載していますので併せてチェックしてみてください。
参考書やネットでVBAスキルを身に付ける
先程も紹介しましたが、
VBAは他のプログラミングに比べて参考書やネットで紹介されている情報量が多いので初心者でも導入しやすい
プログラミングです。
言い換えると、
情報量が豊富なので自分で勉強できちゃう
ということです。
私のVBAスキルはほとんど独学で身に付けたもので、
考えた処理のほとんどをVBAで表現できるレベルにまで到達した!
と思っています。
私の作ったマクロをプロのプログラマーが見れば、
お前の書くコードはインチキだ!「変数の宣言」とか「引数」を正しく使えよ!!
と感じるはずです。
でも、
私からすればどうでもいい!!!想定した内容を正しく処理できればよくないですか!?
独学であっても『写真を貼り付けるマクロ』『全てのシートをPDF出力するマクロ』『連番を振るマクロ』など、
業務内容に合ったマクロを開発できるようになれます。
独学でVBAスキルを身に付けるコツは、
エラーが発生してもいいからひたすらコードを書く、なんでもいいからエクセル作業をマクロ化してみる
です。
とは言っても、全くの知識0の方は何をすればいいかわからないですよね。
VBA知識0の初心者の方は、参考書『たった1秒で仕事が片づくExcel自動化の教科書【増強完全版】』を読んでみてください。
VBAの知識0の方でもすいすい読み進められる内容になっています。
やさしい内容にも関わらず「え!!VBAを使えばこんなことできるの!?」と感動すると思います。
実際に私はこの参考書を読んでからVBAの勉強を始めました。

ひらめく人
VBAの魅力を発見した後は、
ひたすら自動化したい処理を実現するコードを書くだけ
です。
【VBA 写真を貼る】、【VBA PDF出力】、のようにネット検索すれば知りたいコードをすぐにゲットできます。
実現したい処理に向かって、「調べる→書いてみる→エラーを改善する→調べる」を繰り返していると
自然といろんなマクロが作れるようになっているはずです。
VBAに興味が湧いてきたという方は今からVBA学習をスタートさせちゃいましょう。
ディスカッション
コメント一覧
まだ、コメントがありません