Chat GPT × Excel VBA
今回も「Chat GPT」を使って、どんな感じで「Excel VBA」プログラムが作成できるか試していきたいと思います。
ファイル操作 6(ファイル名やフォルダ名の一括変更)
今回は、ファイルやフォルダの名前を変更するプログラムを作成していき
ファイル名を一括変更
①下のフォルダにあるファイル、「在庫表_1月」から「在庫表_6月」の6ファイルの名前を変更するプログラムを作成します。
②内容としては、
・セルB1にファイルのあるパスを記入
・A列の4行目以降に「変更前ファイル名」を記載
・B列の4行目以降に「変更ごファイル名」を記載
③この内容でいつものごとくChatGPTにVBA作成依頼をしました。
「セルB1に記入されたパスにあるA列の4行目以降に記載されているファイルをB列の4行目以降に書かれているファイル名に変更するVBAを作成してください。」
④実行結果
下のように全て「2023年」の文字が追加されたファイル名に変更されました。
【実際のプログラム】
Sub RenameFiles1()
Dim path As String
Dim filename As String
Dim i As Long
path = Range("B1").Value
👆パスの設定
For i = 4 To cells(Rows.Count, 1).End(xlUp).Row
👆「i」の値を4からA列の最終行まで繰り返し
filename = cells(i, 1).Value
👆「filename」変数にセル「i」行目1列(A列)の値を入れる
Name path & "\" & filename As path & "\" & cells(i, 2).Value
👆ファイルの名前を「filename」から、セル「i」行目2列(B列)の値に変更する
Next i
End Sub
同じ文字をファイル名に追加する場合
上でも同じ文字をファイル名に追加しましたが、「変更後のファイル名」を全て書くのが面倒なので、下のように1か所に書かれた文字を全てのファイル名に追加するように変更。
①ChatGPTに下のように依頼。
「セルB1に記入されたパスにあるA列の4行目以降に記載されているファイル名を、絶対セルB4に書かれている値を追加したファイル名に変更するVBAを作成してください。」
※ここで、「絶対セルB4」と記載しましたが、時々「相対セル」になることがあるので、念のため「セルB4は固定してください」等追加した方が良いようです。
②実行結果
下のように、この内容でもすべてのファイル名に「2024年」の文字を追加することができました。
【実際のプログラム】
Sub RenameFiles2()
Dim path As String
Dim filename As String
Dim newfilename As String
Dim i As Long
path = Range("B1").Value
For i = 4 To cells(Rows.Count, 1).End(xlUp).Row
filename = cells(i, 1).Value
newfilename = path & "\" & cells(4, 2).Value & filename
👆新たに「newFilename」変数を追加して、セル4行目2列(B列)の値+「filename」(元の名前)に追加
Name path & "\" & filename As newfilename
👆ファイルの名前を「filename」から「newfilename」に変更
Next i
End Sub
フォルダ名を一括変更
フォルダ名についても一括で変更するプログラムを作成しました。
フォルダ名の変更については、B4セルの値を固定してフォルダ名に追加する方法(上のファイル名変更2つ目の方法)で作成しました。
現状のフォルダは下のように「在庫表_2023年」から「在庫表_2025年」の3つのフォルダがあります。
①ChatGPTにVBA作成依頼。
「同様にB1に書かれたパスにあるA列の4行名以降に書かれたフォルダ名を絶対セルB4の値を追加したフォルダ名に変更するVBAを作成してください。」
②実行結果
こちらも下のように問題なく全てのフォルダに「文房具_」がフォルダ名に追加されました。
【実際のプログラム】
Sub RenameFolders()
Dim path As String
Dim foldername As String
Dim newfoldername As String
Dim i As Long
path = Range("B1").Value
For i = 4 To cells(Rows.Count, 1).End(xlUp).Row
foldername = cells(i, 1).Value
newfoldername = path & "\" & cells(4, 2).Value & foldername
Name path & "\" & foldername As newfoldername
👆基本的な考え方は「ファイル名の変更」と同じです。
Next i
End Sub
※ファイル名、フォルダ名を変更する基本的な構文は下です。
「OldName」「NewName」ともにパスも必要です。
Name OldName As NewName
あとがき
今回はChatGPTで、ファイル名やフォルダ名を変更するプログラムを作成しました。
次回は、ファイル操作 7として
・ファイルやフォルダのコピー、移動
のプログラムを作成したいと思います。