【エクセル】大量の画像ファイルを一瞬でフォルダ分けする方法を紹介

テンパるエイ

画像ファイルを、それぞれのフォルダに分けなきゃいけないの?
こんなにたくさんあるのにどうやってやればいいんだよ…

こんな悩みを解決します。

この記事でわかること

・自動振り分けするマクロの使い方

「マクロ」というワードが出てきて

考えるエイ

なんか難しそう…
面倒くさそう…

と戻るボタンをクリックしそうになったあなた

ちょっとまってください。

難しいコードなんかはすべてコピペです。

エクセルなんてほとんど使ってこなかった僕でもできた手順なんで安心してください。

えい

誰でもわかるように画像をたくさん使って説明するよ

この方法さえ使えるようになれば、

ECサイトにアップする画像がどれだけ増えても怖くありません。

数時間かかる作業が数分で完了するので爽快ですよ。

ぜひ参考にして実践してくださいね。

目次

自動振り分けするマクロの使い方

データを扱う作業は事前にバックアップしておくのがおすすめです。

大前提として

画像のファイル名は

品番(フォルダにつけたい名前)‐01(連番)

になっている必要があります。

今回はハイフン(ー)でつないでますが、アンダーバー(_)やドット(.)の場合も対応できます。

振り分けマクロの使い方を画像付きで解説

STEP
エクセルの起動する
STEP
画像が入っているフォルダのパスを取得しA1セルに貼り付ける

画像が集められているフォルダのネットワークパスを

ステップ1で開いたエクセルのA1セルにコピペします。

フォルダのネットワークパスは

フォルダを右クリック→プロパティ

共有タブを選べば見つかります。

STEP
Visual Basic Editorを開く

見慣れない、聴きなれないものが多いとは思いますが、1個ずつゆっくり行きましょう。

「Microsoft visual basic for Appications」というウィンドウを開きます。

方法はエクセルの画面でキーボードの「Alt」と「F11」を一緒に押せばOKです。

STEP
標準モジュールの挿入

「挿入」→「標準モジュール」の順にクリックすればOKです。

STEP
参照設定を「Microsoft Scripting Runtime」に変更する

「ツール」→「参照設定」→開いた参照設定から「Microsoft Scripting Runtime」を選んで「OK」をクリック

STEP
標準モジュールにコードをコピペする

標準モジュールに下記のコードをコピペしてください。

Sub Furiwake() ‘ファイル名の連番前の文字列でフォルダを作り分配ver2。
Dim FPath1, FPath2, FName

Application.ScreenUpdating = False

FPath1 = Range(“A1”).Value & “\”

FName = Dir$(FPath1 & “*.*”)

Do While FName <> “”

If InStr(FName, “-“) > 0 Then

FPath2 = Left(FName, InStr(FName, “-“) – 1)

End If

On Error Resume Next

MkDir$ FPath1 & FPath2

On Error GoTo 0

FileCopy FPath1 & FName, FPath1 & FPath2 & “\” & FName

Kill FPath1 & FName

FName = Dir$

Loop

Application.ScreenUpdating = True

End Sub

STEP
マクロを実行する

「ツール」→「マクロ」→「Furiwake」→「実行」

の順にクリックしておけばOKです。

マクロ実行後には

こんな感じに振り分けに成功です。

「_」や「.」でつないでいる場合はどうすればいいの?

コード内にある「ー」を「_」や「.」に書き換えればOKです。

If InStr(FName, “-“) > 0 Then

FPath2 = Left(FName, InStr(FName, “-“) – 1)

上記のコードにある(ー)を例えば(_)なら

If InStr(FName, “_“) > 0 Then

FPath2 = Left(FName, InStr(FName, “_“) – 1)

にすればOKということです。

調べたら意外と答えが出てくる。やってみたら意外とできる(以下余談)

今回紹介したマクロは、もちろん僕が考えたわけではありません。(威張るな)

調べたら近そうな質問があったので拝借したものです。

今のご時世、「調べたら解決する疑問なんてたくさんある。」

あらためてそう思いましたよ。

ファイル名からフォルダを生成して振り分けてくれるソフトってありますか?

Excelマクロを作ってみました。
1.Excelを起動し [Alt]+[F11] で開く Visual Basic Editor のウィン
ドウで、[挿入]-[標準モジュール] とたどります。
2.[ツール]-[参照設定] で Microsoft Scripting Runtime を指定しま
す。
3.標準モジュールに下記をコピペして、そのウィンドウを閉じます。

Sub Furiwake() ’ファイル名の連番前の文字列でフォルダを作り分配。
Dim FPath1, FPath2, FName
Application.ScreenUpdating = False
FPath1 = Range(“A1”).Value & “\”
FName = Dir$(FPath1 & “*.*”)
Do While FName <> “”
Select Case InStr(FName, “_”)
Case Is > 0
FPath2 = Left(FName, InStr(FName, “_”) – 1)
Case Else
FPath2 = Left(FName, InStr(FName, “.”) – 1)
End Select
On Error Resume Next
MkDir$ FPath1 & FPath2
On Error GoTo 0
FileCopy FPath1 & FName, FPath1 & FPath2 & “\” & FName
‘ Kill FPath1 & FName  ’※
FName = Dir$
Loop
Application.ScreenUpdating = True
End Sub

シートのセル A1 に、画像ファイルのあるフォルダのフルパスを次の
ように入力して、[ツール]-[マクロ]-[マクロ] から Furiwake を指定
して実行します。
入力例: C:\MyFiles\PhotoData\JPGFiles
この入力されたフォルダの中にサブフォルダを作成して振り分けます。

※の行の先頭の Kill の前にある ’を削除して実行すると、元画像
ファイルが削除されてしまいますので、テストはこのまま実行して
ください。

引用元:(ファイル名からフォルダを自動生成して振り分けしてくれるソフト -ファ- フリーソフト | 教えて!goo)

質問に対してのこの回答を見た時は

えい

難しそう。
面倒くさそうだなぁ

と怯みました。

とは言っても、

やらないと自分がツライ思いをするだけなんで、書かれているままにとりあえずステップを踏む。

(ー)に対応してないコードだったので失敗しましたが

わからないなりに、コードを読んで、怪しそうなところを変更してみたら意外とうまくいきました(笑)

コード変更は自己責任で!

その後は、モチベーションが高いうちにいろいろと調べて、

今回コピペしてもらったコードに改変した流れです。

何を変更したのか?というと

「case」を「if」の計算式に変えただけです。

きれいなコードなのかわかりませんが今はこれで満足してます。

ExcelとVBAの入門解説|エクセルの神髄 (excel-ubara.com)

↑のサイト(エクセルの神髄さま)には本当にお世話になっています。

まとめ~自動化したときの効果は絶大すぎる~

今回はマクロを使って大量の画像をフォルダに振り分ける方法を紹介しました。

エクセルの「A1」にパスを添付

VBAを開いて、標準モジュールを挿入し

ツールにある参照設定を「Microsoft Scripting Runtime」に設定

今回紹介したコードを張り付けて実行

すればOKです。

ググったときは「難しそう」と怯みましたが、調べながら進めていけば意外とすんなりいきました。

なにより作業効率、費用対効果は抜群に良いですよね。

「同じ作業を繰り返すことは自動化できる」

なんてよく言いますが、他にも独学でできそうなものがあったら紹介していきます。

よかったらシェアしてね!
目次