VBAでフォルダ名を取得する方法【 取得したフォルダ名を一覧表で表示 】

Left Caption

豆父ちゃん

サーバー内にある大量のフォルダの名前を取得して一覧表にしたい。

こんな要望に応えるVBAを紹介します。

VBAを使ってまとめてフォルダ名を取得し、一覧表にすることでいろんな作業の効率化に応用することができます。

 

  • フォルダの更新日時を取得し、使用頻度の少ないフォルダを把握する
  • フォルダ名をまとめて変更する
  • 使用頻度の少ないフォルダをまとめて削除する

私の職場ではフォルダ名を取得するVBAをサーバー内のファイルやフォルダの整理整頓をするVBAに応用して利用されています。下記の記事では、エクセルを使ってファイルやフォルダを整理整頓する方法について詳しく紹介しています。

サーバーにあるデータの整理整頓を効率よく行う方法に興味のある方は合わせてチェックしてみてください。

 

広告

VBAを使ってフォルダ名を取得するとはどうのような処理なのか?

フォルダ名を取得するVBAを応用することで作業効率アップに繋がるいろんなVBAに応用することができます。下記の動画ではフォルダ名を一覧表にするVBAと一覧表からフォルダ名を変更するVBAについて紹介しています。どちらのVBAにもフォルダ名を取得するVBAが使われています。

下記のサイトでは動画で紹介しているVBAが設定されたエクセルファイルをダウンロードしてお使い頂けます。これからサーバーにあるデータの整理整頓やフォルダの名前をまとめて編集した!という方におすすめです。

 

フォルダ名を一覧表にするVBA

フォルダ名を一覧表にするVBAの導入方法

① 「フォルダ名取得」シートの作成

下図のようにシートを作成します。

D2セルにはフォルダの場所を記入するので、背景色を白にし、D2セル以外は手入力する必要がないので背景色を黄色にしています。4行目以降のセルにはVBAによってフォルダ名やフォルダ作成日などの情報が自動的に記入されるので罫線を使ってわかりやすいように一覧表を表示しています。

 

② ボタンの作成

上図のように、「開発タブ」 → 「挿入」 → 「ボタン」からボタンを作成します。

VBAを頻繁に扱う場合、「ボタン」の作成は頻繁に発生します。下記の記事では、よく使うコマンドをトップ画面に登録する方法が紹介されています。「ボタン」コマンドをトップ画面に登録しておくことで、「ボタン」を簡単に作成することができます。これからVBAを積極的に導入していこうと考えている方におすすめです。

③ マクロの登録

上図のように、「右クリック」 → 「マクロの登録」 → 「フォルダ名取得」 → 「OK」という操作でボタンにマクロを登録します。マクロ名「データ更新日取得」や「データ名エクセル取得」などの選択肢があるのは、このエクセルファイルにいろんなVBAが設定されているからです。下記のサンプルVBA(フォルダ名を一覧表にするVBA)だけを標準Moduleに記載すると選択肢には1つしか出てきません。

 

サンプルVBA(フォルダ名を一覧表にする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 Fld As Folder
7 Set Fld = fl.GetFolder(FP & “\")
8 Dim FlName As Folder
9 For Each FlName In Fld.SubFolders
10 gyo = Cells(Rows.Count, 1).End(xlUp).Row
11 Cells(gyo + 1, 1) = FlName.Name
12 Next
13 Set fl = Nothing
14 End Sub

 サンプルVBA(フォルダ情報を取得する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 Fld As Folder
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 Fld = fl.GetFolder(FP & “\" & Pa)
12 Cells(i, 2) = Fld.DateCreated
13 Cells(i, 3) = Fld.DateLastModified
14 Cells(i, 4) = Fld.DateLastAccessed
15 Next
16 End Sub

 

フォルダ名を一覧表にするVBAの使い方

① 名前を取得したいフォルダの中身を確認

上図では、「フォルダやデータを操作するVBA」というフォルダに番号と国名が記載されたフォルダが保存されている!という状態です。

 

② D2セルに名前を取得したいフォルダの場所を入力

 

③ フォルダ名を一覧表にするVBAが登録されたボタンをクリック

たったこれだけの操作で、大量にあるフォルダの名前を取得することができます。

 

実行結果

 

VBAが設定されたボタンをクリックするだけで、大量のフォルダ名を一覧表にすることができました。一旦VBAを作ってしまえば、これからずっと使い続けることができ、時間と労力のかかる作業を一瞬で処理することができます。

さらに、フォルダ名の取得VBAを実行したあとに「フォルダ情報を取得するVBA」を使えば、フォルダ名からフォルダの情報を一覧表に表示することが可能です。

フォルダの更新日やアクセス日を一覧表にすることで、現在使われているか、使われていないのか!を一目で確認することができます。フォルダ名を取得するVBAとフォルダの情報を取得するVBAを組み合わせると、より使い勝手の良い便利なVBAになります。

 

フォルダ名をまとめて変更するVBA

フォルダ名をまとめて変更するVBAの導入方法

① 「フォルダ名変更」シートの作成

下図のようにシートを作成します。

D2セルにはフォルダの場所を記入するので、背景色を白。またC列の4行目以降は、「変更後のフォルダ名」を記入するので背景色を白、それ以外のセルの背景色は黄色にしています。手入力が必要なセルは色、それ以外は黄色という設定です。

 

② ボタンの作成

「開発タブ」 → 「挿入」 → 「ボタン」からボタンを作成します。あらかじめ「フォルダ名取得」ボタンと「フォルダ名変更」ボタンの2つのボタンを作成してください。

③ マクロの登録

フォルダ名をまとめて変更するVBAには2つのVBAが必要です。ボタンを2つ作成し、「フォルダ名を取得するVBA」と「フォルダ名を変更するVBA」を登録してください。

サンプルVBA(フォルダ名取得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 Fld As Folder
7 Set Fld = fl.GetFolder(FP & “\")
8 Dim FlName As Folder
9 For Each FlName In Fld.SubFolders
10 gyo = Cells(Rows.Count, 1).End(xlUp).Row
11 Cells(gyo + 1, 1) = FlName.Name
12 Next
13 Set fl = Nothing
14 End Sub

 

サンプルVBA(フォルダ名変更VBA)

1 Sub フォルダ名変更()
2 gyo = Cells(Rows.Count, 1).End(xlUp).Row
3 Dim fl As FileSystemObject
4 Set fl = New FileSystemObject
5 Dim ff As Folder
6 Dim FP As String
7 FP = Cells(2, 4)
8 For i = 4 To gyo
9 FoName = FP & “\" & Cells(i, 1)
10 Set Flp = fl.GetFolder(FoName)
11 Flp.Name = Cells(i, 3)
12 Next
13 Set fl = Nothing
14 End Sub

 

フォルダー名を変更するVBAの使い方

手順としては、「D2セルにフォルダ場所を記入」 → 「フォルダ名を取得するVBAを実行」 → 「C列に変更後のフォルダ名を記入」 → 「フォルダ名を変更するVBAを実行」です。

 

実行結果

上図では、国名の前に記載された番号を消去する!といった変更を行いました。フォルダ内名を確認してみると、一覧表で操作したフォルダの名前が変更されていました。このVBAは、フォルダの名前をまとめて変更したい!ときにとても便利です。

注意しなければいけないのが、フォルダ名を取得してからすぐにフォルダ名の変更を行うこと!です。名前の変更VBAを実行する前に誰かがフォルダの名前を変更した場合、名前を変更したいフォルダが存在しません!というエラーが発生してしまいます。名前の変更VBAは名前の取得VBAを実行してから速やかに実行するようにしましょう。

 

フォルダ名を取得するVBAを使ってサーバーの整理整頓を行う

大人数で共用のサーバーを使って仕事をしていると、サーバー内にいろんなファイルやフォルダが増えていきますよね。

 

  • 2018年勤務表
  • 2019年写真フォルダ
  • 2020年スケジュール表
  • 2020年伝票フォルダ

私の職場では、このようなフォルダが何百個とあります。転勤の多い仕事のため、赴任した職場で古いフォルダやファイルが重要なのか、削除していいのか判断できず、ずっと残り続けるという現象が起こってしまいます。

古いフォルダやファイルが何百個もあるサーバーの整理整頓をするときに活躍するのが、フォルダ名を取得するVBAです。

フォルダ名を取得するVBAの効果

 

  • 煩雑しているフォルダの現状を1クリックで一覧表にすることができる
  • 大量のフォルダ名を短時間で名前の変更をすることができる
  • 最終更新日時を取得し、使用頻度の少ないフォルダを把握することができる

実際に私はこのフォルダ名を取得するVBAを職場に導入し、サーバー内の整理整頓作業を行いました。そのときに活躍したのが、上記で紹介しているフォルダの最終更新日時がわかる一覧表です。最終更新日時がわかると、このフォルダが必要か必要ではないか!の判断材料になり、職場全体に確認をとることができます。

下記の記事では、フォルダ名を取得するVBAを利用したサーバーにあるデータを整理整頓する方法について詳しく紹介しています。

気になる方は是非参考にしてみてください。

 

 

 

今回はフォルダ名を取得し操作する方法を紹介しましたが、関連記事で紹介している、VBAを使ってファイル名を取得する方法ではワードやエクセル、テキストファイルの名前を取得し一覧表にする方法を詳しく紹介しています。

下記のサイトでダウンロード可能なエクセルファイには、フォルダ名を取得するVBAとファイル名を取得するVBAの両方が設定されているので、併せてチェックしてみてください。

フォルダ名とファイル名の両方を取得することができれば、さらに作業効率をアップさせることができる高度なVBAを作成することができるようになります。

エクセルVBAを使って操作中のブック以外のものの操作ができるようになると、開いていないブックの操作をやってみたくなりますよね。関連記事で紹介している、「複数のエクセルファイルを1つのブックにめとめるVBA」と「複数のエクセルファイルを同時に操作するVBA」では開いていないブックの遠隔操作、処理の方法を詳しく紹介しています。

エクセルVBAを使って、機械的なエクセル業務の効率をアップさせたいと考えている方におすすめの内容になっています。是非チェックしてみてください。

 

VBA初心者が効率化マクロを導入する方法

 

VBAなんて扱ったことないけどエクセル作業を自動化するマクロを導入したい!

このような問題を抱えながら日々のエクセル業務をこなしている方がおおくいらっしゃるのではないでしょうか。

 

こんな問題を解決する方法がこちら

  • マクロの開発を外注に依頼する
  • マクロが設定されたエクセルファイルをダウンロードする
  • 参考書やネットでVBAスキルを身に付ける

 

VBAの勉強を始める前は上記の方法で効率化マクロを導入していました。

 

 

 

完成されたマクロを使ってエクセル業務を処理する

作業効率が2倍以上アップ!!

便利すぎて自分でもマクロを設定したいと考え始める

参考書やネットの情報でVBAスキルを身に付ける

マクロ開発を代行できる程のスキルを習得

 

 

 

VBAは

他のプログラミングに比べて参考書やネットで紹介されている情報量が多いので初心者でも導入しやすい

という特徴があります。

 

毎日のルーティーン作業にうんざりしている、だれでもできる単純作業に時間を費やしている、という方はあなたに合った方法でVBAを導入しちゃいましょう。

 

マクロの開発を外注に依頼する

マクロの開発を外注に依頼する導入方法は

VBAを全く扱えない方でもエクセル作業を自動化できる最も簡単な方法

です。

 

「こんなエクセル作業を自動化したい」「作った資料を自動的にPDFで保存したい」「決まった様式に写真を自動で貼り付けたい」

こんな感じで実現したい内容を依頼するだけで業務内容に合ったマクロを開発してくれます。

 

Left Caption

ガッツポーズの人

完成まで本業に集中できるので効率的

 

 

デメリットは、費用がかかることだけ。

開発内容、依頼先によってかかる費用は大きく異なります。

私が会社員の頃利用していた業者さんは1マクロあたり2万円~3万円の費用がかかりました。

 

Left Caption

疑問がある人

ちょっと高くない。。。

 

ちなみに、マメBlogでもエクセルマクロ開発代行サービスを承っています。

開発内容の確認、VBAコードの設定、動作確認後の調整、など全ての工程を私(マメ父ちゃん)が行っているので、

費用が安い!スピード納期!!

でやらせてもらっています。

 

ほとんど独学で身に付けたVBAスキルなので、内容によっては開発できないこともあるのでご了承ください。

 

ご相談、見積もり依頼は完全無料ですので気になる方は下記のリンクよりお問合せ下さい。

 

 

マクロが設定されたエクセルファイルをダウンロードする

VBA初心者でも『マクロが設定されたエクセルファイルをダウンロード』ですぐにエクセル作業を自動化することができます。

 

たとえば、

A4用紙に写真を貼り付けてコメントを入力する作業を自動化したい!という場合、

『写真を貼り付けるマクロ』が設定されたエクセルファイルをダウンロードすれば問題解決です。

 

実際に、『写真を貼り付けるマクロ』をダウンロードして使っている様子がこちら

写真貼付けマクロの使い方を示したイラスト

 

 

Left Caption

ガッツポーズの人

写真貼付け作業の効率がめちゃくちゃアップ

 

 

『マクロが設定されたエクセルファイルをダウンロード』する導入方法は、

VBA初心者でもマクロを導入できる、費用が安い、

というメリットがあります。

 

しかし

VBAに関する情報が多く公開されているとはいえ、ネット上で想定するマクロは見つけることが難しい

というデメリットもあります。

 

Left Caption

ガッツポーズの人

お目当てのマクロが見つかればラッキー

 

個人ブログやファイルを販売できるサイト「note」や「Tips」ではいろんなマクロの情報が掲載されているので是非参考にしてみてください。

 

今までマメBlogで受注した効率化マクロを下記のnoteで掲載していますので併せてチェックしてみてください。

 

 

 

参考書やネットでVBAスキルを身に付ける

先程も紹介しましたが、

VBAは他のプログラミングに比べて参考書やネットで紹介されている情報量が多いので初心者でも導入しやすい

プログラミングです。

 

言い換えると、

情報量が豊富なので自分で勉強できちゃう

ということです。

 

私のVBAスキルはほとんど独学で身に付けたもので、

考えた処理のほとんどをVBAで表現できるレベルにまで到達した!

と思っています。

 

私の作ったマクロをプロのプログラマーが見れば、

お前の書くコードはインチキだ!「変数の宣言」とか「引数」を正しく使えよ!!

と感じるはずです。

 

でも、

私からすればどうでもいい!!!想定した内容を正しく処理できればよくないですか!?

 

独学であっても『写真を貼り付けるマクロ』『全てのシートをPDF出力するマクロ』『連番を振るマクロ』など、

業務内容に合ったマクロを開発できるようになれます。

 

独学でVBAスキルを身に付けるコツは、

エラーが発生してもいいからひたすらコードを書く、なんでもいいからエクセル作業をマクロ化してみる

です。

 

とは言っても、全くの知識0の方は何をすればいいかわからないですよね。

 

VBA知識0の初心者の方は、参考書『たった1秒で仕事が片づくExcel自動化の教科書【増強完全版】』を読んでみてください。

 

VBAの知識0の方でもすいすい読み進められる内容になっています。

やさしい内容にも関わらず「え!!VBAを使えばこんなことできるの!?」と感動すると思います。

 

実際に私はこの参考書を読んでからVBAの勉強を始めました。

 

Left Caption

ひらめく人

VBA学習スタートのきっかけをくれた参考書


 

 

VBAの魅力を発見した後は、

ひたすら自動化したい処理を実現するコードを書くだけ

です。

 

【VBA 写真を貼る】、【VBA PDF出力】、のようにネット検索すれば知りたいコードをすぐにゲットできます。

 

実現したい処理に向かって、「調べる→書いてみる→エラーを改善する→調べる」を繰り返していると

自然といろんなマクロが作れるようになっているはずです。

 

VBAに興味が湧いてきたという方は今からVBA学習をスタートさせちゃいましょう。