クラスを使用してファイル名変更を作ってみた
タイトルのマクロは、以下。指定されたフォルダ内でファイルの名前を変更するためのものです。新しいファイル名には元の拡張子が維持されます。
'****************************
'* ファイル名変更、拡張子は同じ。20230224
'* myFileName:ファイル名
'* myFileRenameWoExtension:変更後のファイル名、拡張子除く
'* myPath:ファルダ
Sub FileRenameSameExtension(myFileName As String, myFileRenameWoExtention As String, myPath As String)
Dim F As FileObj: Set F = New FileObj
' フォルダの確認
If Not F.ExistFolder(myPath) Then
MsgBox "フォルダが確認できませんでした"
Exit Sub
End If
' ファイルの確認
If Not F.ExistFile(myPath & "\" & myFileName) Then
MsgBox "ファイル名が確認できませんでした"
Exit Sub
End If
' 変更する同名ファイルがないかの確認
F.Name = myPath & "\" & myFileName
Dim myFileRename As String: myFileRename = myFileRenameWoExtention & "." & F.Extension
If F.ExistFile(myPath & "\" & myFileRename) Then
MsgBox "移動先に同名のファイルがあります"
Exit Sub
End If
' ファイル名変更
F.Rename (myFileRename)
Set F = Nothing
End Sub各部分の説明
サブルーチンの宣言:
Sub FileRenameSameExtension(myFileName As String, myFileRenameWoExtention As String, myPath As String)myFileNameは変更するファイルの名前。myFileRenameWoExtentionは新しいファイル名(拡張子を除く)。myPathはファイルが存在するフォルダのパス。
FileObj クラスのインスタンス化:
Dim F As FileObj: Set F = New FileObjFileObjクラスの新しいインスタンスを作成します。このクラスにはフォルダやファイルの存在確認、ファイル名の変更などの機能が含まれています。
フォルダの確認:
If Not F.ExistFolder(myPath) Then
MsgBox "フォルダが確認できませんでした"
Exit Sub
End IfExistFolderメソッドを使用して、myPathフォルダが存在するかを確認します。存在しない場合はエラーメッセージを表示してサブルーチンを終了します。
ファイルの確認:
If Not F.ExistFile(myPath & "\" & myFileName) Then
MsgBox "ファイル名が確認できませんでした"
Exit Sub
End IfExistFileメソッドを使用して、myPathフォルダ内にmyFileNameファイルが存在するかを確認します。存在しない場合はエラーメッセージを表示してサブルーチンを終了します。
変更する同名ファイルがないかの確認:
F.Name = myPath & "\" & myFileName
Dim myFileRename As String: myFileRename = myFileRenameWoExtention & "." & F.Extension
If F.ExistFile(myPath & "\" & myFileRename) Then
MsgBox "移動先に同名のファイルがあります"
Exit Sub
End IfNameプロパティを使用して、元のファイルのフルパスを設定します。Extensionプロパティを使用して、元のファイルの拡張子を取得し、それを新しいファイル名に付加します。ExistFileメソッドを使用して、myPathフォルダ内に新しいファイル名と同名のファイルが存在しないかを確認します。存在する場合はエラーメッセージを表示してサブルーチンを終了します。
ファイル名の変更:
F.Rename (myFileRename)Renameメソッドを使用して、ファイル名を新しいファイル名に変更します。
FileObj クラスのインスタンスの解放:
Set F = NothingFileObjクラスのインスタンスを解放します。
使用例
以下の使用例では、「example.txt」ファイルの名前を「new_example.txt」に変更します。
Sub ExampleUsage()
' ファイル名を変更
Call FileRenameSameExtension("example.txt", "new_example", "C:\TEMP")
End Subこの ExampleUsage サブルーチンを実行すると、FileRenameSameExtension サブルーチンが呼び出され、「C:\TEMP」フォルダ内の「example.txt」ファイルが「new_example.txt」に変更されます。各ステップで存在確認が行われ、問題があればエラーメッセージが表示されます。


