検索

キーワード


目次

【Excel VBA】フォルダー内のファイルのを名前を一括でリネーム(変更)する方法

  • 公開日:2021-04-05 16:28:50
  • 最終更新日:2021-04-05 14:33:57

Workteria(ワークテリア)では難易度の高いものから低いものまで、スキルや経験に合わせた案件を多数揃えています。会員登録は無料ですので、ぜひ会員登録してご希望の案件を探してみてください!

フリーランス/正社員のエンジニアとして活躍するには、ご自身のスキルや経験に合わせた仕事を選ぶことが大切です。ご希望の案件がみつからない場合はお気軽にお問い合わせください!ユーザ満足度の高いキャリアコンサルタントが在籍していますので、希望条件や悩み事などなんでもご相談ください。ご希望にピッタリの案件をご紹介させていただきます。

はじめに

こんにちは。IMMRです。

例えば、下記のようにフォルダー内にデータが投稿されているとします。


図1 フォルダーの中のファイル

フォルダーの中のファイル


ファイルの名前は、「AABBCCDD」で1~30番号が付いています。

もし、ファイル名を「AABBCCDD」から「ABCDE」に変更したいとなった場合どうしますか。


1個、1個変更しては時間がかかってしまいます。

今回は、フォルダー内のファイルのを名前を一括でリネーム(変更)する方法について説明します。


1. ファイルの名前変更方法

ファイルの変更するには、Nameステートメントを使用します。

Nameステートメントは、下記のように「現在のファイル名」から「変更したいファイル名」に変更という形式で行います。

Name 「現在のファイル名」 As 「変更したいファイル名」


ファイル名は、「testdata.txt」という感じで、名前だけでなく、パスも入れる必要があります。例:C:\VBA\testdata.txt

パスの変更も出来ます。その場合は移動になります。例:Name 「C:\VBA\testdata.txt」As 「C:\VBA1\testdata.txt


2. フォルダー内のファイルを参照

上記の方法でファイルのを名前をリネーム(変更)することが出来ます。

これは1つのファイルに対しての作業です。

そのため、フォルダー(C:\VBA2)の中に、ファイル「aaa1」「aaa2」「aaa3」「aaa4」「aaa5」があるとして

そして「aaa」を「bbb」にリネーム(変更)するとすると

Name C:\VBA2\aaa1 As C:\VBA2\bbb1

Name C:\VBA2\aaa2 As C:\VBA2\bbb2

Name C:\VBA2\aaa3 As C:\VBA2\bbb3

Name C:\VBA2\aaa4 As C:\VBA2\bbb4

Name C:\VBA2\aaa5 As C:\VBA2\bbb5

となってしまい、量が多くなってしまいます。

100個とかあると大変です。


そんな時は、フォルダー内のファイル名をひとつずつ確認して、それに対してリネーム処理を行うことで

何回も記述する必要はなくなります。

下記、記事で紹介しておりますのでご参照下さい。

フォルダー内のファイル名を全て取得する方法


3. フォルダー内のファイルのを名前を一括でリネームする方法のサンプルコード

フォルダー内のファイルのを名前を一括でリネーム(変更)するサンプルコードを紹介します。


サンプルコード

Sub test28()

Dim i       As Integer
Dim FILE_PATH       As String
Dim FSO             As Object
Dim TARGET          As Files
Dim TEMP            As Object

Dim FILE_OLD As String
Dim FILE_NEW As String

FILE_PATH = "C:\VBA\データ"

Set FSO = New FileSystemObject
Set TARGET = FSO.GetFolder(FILE_PATH).Files

For Each TEMP In TARGET
    FILE_OLD = FILE_PATH & "\" & TEMP.Name
    FILE_NEW = Replace(FILE_OLD, "AABBCCDD", "ABCDE")
    Name FILE_OLD As FILE_NEW
Next
   
End Sub



ファイル名を取得したいフォルダーのパスは「C:\VBA\データ」なので、一度変数(FILE_PATH)に格納します。


For Each TEMP In TARGETでは

フォルダー内にあるファイルの情報を1つずつ変数(TEMP)に格納していきます。


FILE_OLD = FILE_PATH & "\" & TEMP.Nameでは、

先ほどの変数(FILE_PATH)に格納した「C:\VBA\データ」と1つ目のファイル名を合わせたものを「FILE_OLD 」に格納します。

つまり、現在のファイルのパスと名前が格納されることになります。

ファイル名が「AABBCCDD0001.txt」だとすると「C:\VBA\データ\AABBCCDD0001.txt」が格納されていることになります。


FILE_NEW = Replace(FILE_OLD, "AABBCCDD", "ABCDE")では、

FILE_OLD」の中の"AABBCCDD"を"ABCDE"に置換して、その結果をFILE_NEW 」に格納します。

つまり、

FILE_OLD 」がC:\VBA\データ\AABBCCDD0001.txt」だとすると

FILE_NEW 」にはC:\VBA\データ\ABCDE.txt」が格納されます。


Name FILE_OLD As FILE_NEWでは

FILE_OLD 」からFILE_NEW 」にリネームしています。

FILE_OLD 」がC:\VBA\データ\AABBCCDD0001.txt」で

FILE_NEW 」にはC:\VBA\データ\ABCDE.txt」だとすると

C:\VBA\データ\AABBCCDD0001.txt」からC:\VBA\データ\ABCDE.txt」に変更されます。


このような処理をフォルダー内のデータ一つずつ行っていくことになります。



ただ、置換で怖いのが指定した文字があった場合、ファイル名以外も変わってしまうことがあります。

例:「C:\VBA\DATAACTION\AA01.txt」というデータがあり、を"AA"から"BB"に置換します。

  そうなると「「C:\VBA\DATBBCTION\BB01.txt」」となってしまい変えたくなかったところも変わってします。

  そのような場合は、拡張子(.txt)等を付けて

「AA」を「BB」に置換ではなくて、

「\AA」を「\BB」にする等をして行う必要があります。


4. フォルダー内のファイルのを名前を一括でリネームする方法のサンプルコードでエラー

上記、サンプルコードを実行しても「ユーザ定義型は定義されていません」というエラーが発生した場合があります。

その場合は、VBAの詳細設定が必要です。


設定方法は、下記記事の「4.サンプルコードを実行してフォルダー内の全てのファイル名を取得する前に」をご参照下さい。

フォルダー内のファイル名を全て取得する方法



5 フォルダー内のファイルのを名前を一括でリネームする方法のサンプルコードの実行

フォルダー内のファイルのを名前を一括でリネーム(変更)していきます。

下記のようにフォルダーの中にファイルがあるとします。


図2 フォルダーの中のファイル(実行前)

フォルダーの中のファイル(実行前)


このファイル名を「AABBCCDD」から「ABCDE」に変更していきます。

それでは、上記サンプルプログラムを実行していきます。



図3 フォルダーの中のファイル(実行後)

フォルダーの中のファイル(実行後)


ファイル1つ1つがAABBCCDD」から「ABCDEになっています。

フォルダー内のファイルのを名前を一括でリネーム(変更)することが出来ました。


【著者】

Imamura

「挑戦心」を忘れずに、新しいことにチャレンジしています。 資格:VBAエキスパート Excel VBA(ベーシック/スタンダード) 等

編集した記事一覧

正社員/フリーランスの方でこのようなお悩みありませんか?

  • 自分に合う案件を定期的に紹介してもらいたい
  • 週2、リモートワークなど自由な働き方をしてみたい
  • 面倒な案件探し・契約周りは任せて仕事に集中したい

そのような方はぜひ、Workteriaサイトをご利用ください!

  • 定期的にご本人に合う高額案件を紹介

  • リモートワークなど自由な働き方ができる案件多数

  • 専属エージェントが契約や請求をトータルサポート

よく読まれている記事