【初心者向け】フォルダ内の全てのファイルに同じ処理をする方法【Excel VBA】

こんにちは!『ルウちゃんのExcel Labo』管理人の@rouxchanblogです!

今回はこのような悩みについて解説します。

ルウちゃん

フォルダ内のファイル全てに同じ処理をするにはどうやったらいいの?

この記事でわかるようになること
  1. ファイル全てに同じ処理をする方法
  2. ファイルパスを取得する方法
  3. dir関数の使い方←超重要
  4. 繰り返し処理をさせる方法
目次

はじめに

まずはサンプルコード使って実際の動きを確認してみましょう!

今回は”sample”というフォルダに”Book1″から”Book4″まで作成し、全てのA1セルに”こんにちは”と入力していきます。

用意したファイル
ファイルの中身

このように中になにも入力されていないファイルを4つ作成しました。

それでは下記のコードを実行して全てのファイルに処理を実行していきます。

サンプルコード
Sub Sample1()
    Dim filepath As String, cnt As Long '変数の宣言
    Const folderpath  As String = "/Users/○○/Desktop/Sample/" '定数の宣言
    filepath = Dir(folderpath & "*.*") 'dir関数でフォルダの中のファイル名を返します
    Do While filepath <> "" '変数に空白が入るまで処理を繰り返す    
    Workbooks.Open (folderpath & filepath) 'ワークブックを開いていく
'--------実行させたい処理---------
   
Range("A1").Value = "こんにちは"

'--------実行させたい処理---------
    Workbooks(filepath).Close SaveChanges:=True
    '変数にまだ入力されていないファイル名を格納する
    filepath = Dir()
    Loop 'Do While に戻る
End Sub

※”/Users/○○/Desktop/Sample/”の部分は実際のパスを入力してください。

Book1
Book2
Book3
Book4

このようにフォルダ内のファイル全てに処理を実行させることができます。

筆者は実際に大量のファイルの印刷設定を変更する際にこのコードを活用しました。

↓「file system Object」を使った方法はこちら↓

コード解説

変数と定数の定義

それではコードの細かな解説をしていきます!

まずはフォルダのパスを取得しましょう。パスとは”/Users/○○/Desktop/Sample/”のようなものです。

そして変数と定数を定義します。変数にファイル名を、定数にはフォルダのフルパスを入力します。

変数と定数の定義

Dim filepath As String, ←変数の宣言です
Const folderpath As String = “/Users/○○/Desktop/Sample/”   ←定数の宣言です

Dir関数とは

次にDir関数でフォルダ内のファイル名を1つずつ取得していきます。

Dir関数は引数にフォルダのフルパスを入力することでファイルの名前を返してくる関数です。

Dir関数を引数無しで使うと、フォルダ内の1度も返していないファイル名を返すことができます。

Dir関数の引数に(*.xlsx)とすることでxlsxという拡張子のファイル名をフォルダの中から探してくることが出来ます。

この*はワイルドカードと言って、全ての文字に対応してくれます。

そして全てのファイル名を返すと空白で返してくれます。

この空白を返してくるという性質を使って、繰り返し処理を実行していきましょう。

Dir関数とは

filepath = Dir(folderpath & “.“)   ←dir関数でフォルダ内の1番目のファイル名を返します

filepath = Dir() ←フォルダ中のまだ選択されていないファイル名を返します

※返すファイル名がない場合は””を返します。

繰り返し処理させる

次に「Do while loop」を使って処理を繰り返していきます。

「Do while」の後にこうなった時処理を終了させるという条件を入力することでそれまで処理を繰り返すことができます。

今回は「filepath」に空白が入るまで処理を実行させるようにしました。

自分がファイルに実行したい処理を間に入力することで繰り返し実行させることができます。

繰り返し処理

Do While filepath <> “”   ←変数に空白が入るまで処理を繰り返します

〜繰り返しさせたい処理〜

Loop   ←Do While に戻ります

まとめ

  1. 全てのファイルパスを1つずつ取得する
  2. ファイルパスを指定して処理を実行させる

今回は「Dir関数」を使ってフォルダ内のファイル全てに処理を実行させていきました。

かなり汎用性に優れているので少し難しいかもしれませんが構造を理解して使ってみてください!

このように実務で重宝するコードは他にもたくさんあります!

自分ではなかなか思いつかないときに筆者は技術書に頼っています!

みなさんもネットや動画で調べ切って、煮詰まってしまった時は1冊でいいので買ってみてはいかがでしょうか?

アイデアは経験値から生まれてくるものです!自分の手で掴みにいきましょう!!

この記事で少しでも皆さんのお役に立てれば幸いです!

忘れないうちにお気に入り登録もお願いします!

ありがとうございました!

/// お得な情報 ///

すぐに使えて便利なテクニックが650個も手に入る!

気になる人は今すぐクリック!!

 

目次