大量のファイルのファイル名一括変更

DWE

510枚のTACカードの両面スキャンで、1,020個のファイルができたのですが、日付がファイル名になっていて、見づらいなぁ~なんて思う方向けですので、気にしない方はそのままでOKです。

カードの番号をファイル名にしておけば後々探しやすいと聞き、ファイル名を変更しようと思いました。

丁寧に書いてみたので、かなり長いですが、実際の作業は5分くらいで終わりますので、気になった方はお試しください^^

たくさん調べ試行錯誤して辿り着いた方法をまとめましたが、私はプログラミングのプロではなくただの主婦なので、細かい仕組みとかはよくわかりません。

あくまでも自己責任の上バックアップを取ってから実行してください。万が一この方法でファイルが消えたり、開けなくなっても責任は負いかねます。(私自身もコピーを使っています)

ファイル名どうする?

TACは裏表があるので、スキャンしたファイルは順番に1表・1裏・2表・2裏…なっています。

ファイル名をこれに沿って、1f・1b・2f・2b…のようにしたいと考えました。

ちなみに、f=front⇒表・b=back⇒裏 です。

フリーソフトで一括で変更できるものを探しましたが、いいものが見つからず、結局エクセルでマクロを組んで変更することにしました。(自分でマクロ組むなら変なフリーソフト入れるより怖くないしね)

マクロを組むと聞くと難しそうですが、コピペでできるので簡単ですよ♪

マクロの設定

まず、エクセルを開いたときに、『開発』タブはありますか?

無い方は、以下の方法で表示させてください。

1. エクセルを開き、『ファイル』→『オプション』をクリック
2. ↑の画像のように『リボンのユーザー設定』をクリックして、
右に出てきた『開発』の横にあるチェックボックスにチェックをいれる☑

それでは、本題に入ります。

①『開発』タブ→1番左の『Visual Basic』をクリック

②出てきたウィンドウで、左側のSheet1をクリック後、左上のコードの表示ボタンをクリック

③右側に↓をコピー&ペーストする。

Sub ファイル名を指定のファイル名に一括変換()
 Dim fp As String
 Dim i As Long
 Dim fo As String
 Dim fn As String
 fp = Range("A1").Value & "\"
 On Error GoTo ERR_HANDL
 Range("C1").Value = "実行結果"
 For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
 fo = Cells(i, 1).Value
 fn = Cells(i, 2).Value
 If fn <> "" Then
 Cells(i, 3).Value = _
 "ファイル名を" & _
 "「" & fo & "」から" & _
 "「" & fn & "」に変更"
 Name fp & fo As fp & fn
 End If
 Next i
 Exit Sub
 ERR_HANDL:
 Cells(i, 3).Value = _
 "×" & Err.Description & ":" & Err.Number
 Resume Next
 End Sub
コピペ後はこんな感じ

ちなみに、こちらのサイトを参考にさせて頂きました!

④一番左のエクセルマークのようなアイコン(表示)をクリックしてエクセルに戻る

⑤エクセルのA1セルにファイル名を変更したいファイルの入っているフォルダのアドレスを入力

アドレスのコピー方法は、対象のフォルダを開いて、アドレスバー(下図参照)をコピーすればOKです。(クリックするとアドレスに変わります)

エクセルのA1セルに貼るとこんな感じ。

変更したいファイル名をA2セルへ貼り付け

①フォルダを詳細表示にする。(表示タブ→詳細)

日付時刻を押して、昇順で並び替えをする。

昇順は、『日付時刻』の横に^が表示されている状態

③変更したいファイル名をコピー

ファイルを全選択(Ctrl+A)し、Shift+右クリック →『パスのコピー』

④メモ帳に貼り付け

ファイル名だけにしたいのに保管場所まで全てコピーされてるので、それをメモ帳の置換機能で消すという作業です。(エクセルでやってもOK)

  1. ファイル名の前の ” \ ” までコピー(右の画像参照)
  2. 『編集』→『置換』
  3. 『検索する文字列』に1でコピーしたものが入っていることを確認 (『置換後の文字列』は空欄でOK)
  4. すべて置換
  5. 余計な『”』が最後に入っていたらそれも同様に置換で消す

⑤エクセルのA2に貼りつけ

並び順がおかしい場合

貼り付けたファイル名がちゃんと1のカードから順番に並んでいるか確認してください。

並び順が正しい場合はこのステップは飛ばしてOKです。

⑥2行目に行を追加する。

⑦メモ帳に戻り、④同様、置換でファイル名から数字以外の全てを消す。

⑧B列に貼り付け

1つ目のファイルはファイル名の後ろに数字がないので、ここでは”0″としておく

⑦B列を昇順で並び替える

B3セルを選択→並べ替えとフィルター→昇順
これでA列も連動して変更されます

⑧B列を削除する

⑧空欄の2行目を削除し上に詰めます。

変更後のファイル名を隣(B列)に入力

いきなり1f,1b,2f,2b,3f,3b…とオートフィルでの入力はできないので、

まず1,1,2,2,3,3…のみB列に作ります。でもこれも少し工夫が必要です。

①B2~B5セルに以下のように入力

②B4,B5の2つのセルでオートフィル

 (2セルを選択し、右下”・”にカーソルを合わせると”+”になるので、”+”をダブルクリックする)

B4,B5の2つを選択し右下の+をダブルクリック

 510まで番号ができていることを確認してください。

③B列をコピーし、C列に”値の貼り付け”をする

B列をまるごとコピーして、C列に貼り付けると出てくる右上の”Ctrl”をクリックして
”値の貼り付け”の数字のみのものを選ぶ

④D2,D3に『f』, 『b』と入力し、D2,D3の2つのセルでオートフィル

⑤E2に『.jpg』と入力しオートフィル

⑥C,D,E列を列ごとコピーし、メモ帳に貼り付け後、置換機能で空欄を消す

CCnCnoCnC
メモ帳に貼り付け後、①文字の間の空欄をコピー
②『編集』→『置換』→『すべて置換』
このように空白が消えます

⑥メモ帳をCtrl+Aで全てをコピーし、エクセルB1セルに貼り付ける

⑦C,D,E列を列ごと削除する

こんな感じになる

マクロを実行する

お疲れさまでした。あとはもうマクロを実行するだけです。

マクロ使ったことのない方のために実行手順も書いておきますね。

『開発』タブから『マクロ』をクリック→『実行』

初めの『マクロの設定』で作ったマクロ名がこのように出てくる
『実行』後はこのように右側に実行結果が現れる

以上です!

あとは、元のフォルダを開き正しく変更されているか確認してくださいね。

コメント

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