Excelのこととか色々

Excel のこととか楽天とか いろいろ書いてみます・・・

【Excel/VBAのこと53】マクロでファイル名を一括変換

   f:id:tuna-kichi:20200223230814p:plain

 

こちらの記事で大量にあるファイル名を一括で変換できるバッチファイルを作成する方法を書きました。

www.tuna-kichi.com

 

しかし、どういうわけか会社のPCで実行するとファイル名が文字化けし、
エラーになって変換できません。

Excelのマクロで同じことができないか調べたら・・・

ありました!

 

Name というものを使えばバッチファイルの時と同じように変換できました。

 

 

Excel での準備

 Excelでの準備

Excel に

・変換前のファイル名の列
・新ファイル名の列
・フォルダパスを入力するセル

を準備します。

 

コマンドプロンプトで変換前のファイル名を一括で取得できます。

該当のフォルダに移動してから、

>dir /b >list.txt

を実行すると list.txt というファイル名で、

そのフォルダに保存されているすべてのファイル名を取得したテキストが作成されます。

 ファイル名一括取得

 list.txt



www.tuna-kichi.com

 

**********

マクロ

 

Sub ファイル名変換()

    Dim r As Long
    Dim OldNameC As Long    '変換前ファイル名の列
    Dim NewNameC As Long    '新ファイル名の列
    Dim LastR As Long   '最終行
    Dim Path As String  'ファイル名を変換するフォルダのパス
    
    OldNameC = 1
    NewNameC = 2
    LastR = Cells(Rows.Count, OldNameC).End(xlUp).Row
    Path = Cells(1, 5) & "¥"    '※

    For r = 2 To LastR
        Name Path & Cells(r, OldNameC) As Path & Cells(r, NewNameC)
        
    Next r

End Sub

 

※ 該当のフォルダパスを入力したセルの後に新/旧ファイル名を続けます。
Cells(1,5) には C:¥Sample までしか格納されないので、
最後尾に「¥」を追加します。

セルに「¥」を追記しても良いかもしれません。

 

Name の構文は

Name [該当フォルダのパスとファイル名] AS [該当フォルダのパスと新ファイル名]

です。

 

Name Path & Cells(r, OldNameC) As Path & Cells(r, NewNameC)

を変数なしで記述すると

Name "C:¥Sample¥Sample_001.txt" AS "C:¥Sample¥Sample_006.txt"

になります。

 

あとはシート上にボタンを作成してこのマクロを登録すれば完成です。

 ボタン作成

 

_/_/_/_/_/_/_/_/_/_/_/

 

 

 

個人用マクロブックについてはこちら

リボンに登録についてはこちら

_/_/_/_/_/_/_/_/_/_/_/_/_/_/