ファイル名変更Nameステートメントを用いたファイル名変更 2012.09.27 [更新日]2024.11.28
Nameステートメントを用い、ファイル名やフォルダ名を変更するコードとメモです。
メモ①
Nameステートメントを使用すると、ファイルやフォルダの名前を変更できる。
構文は次の通りシンプルである。
Name (変更前の名前) As (変更後の名前)
変更前の名前や変更後の名前には、フルパスで指定することが多いが、フルパスで指定しない場合にはカレントフォルダが起点となる。
フルパスを設定しファイル名を変更する例
Name "C:\Sample.xlsx" As "C:\NewSample.xlsx"
カレントフォルダのファイル名を変更する例
Name "Sample.xlsx" As "NewSample.xlsx"
カレントフォルダの「テスト」フォルダ内のファイル名を変更する例
Name "テスト\Sample.xlsx" As "テスト\NewSample.xlsx"
変更前の名前と変更後の名前とで違うフォルダを指定した場合、ファイルが移動する(ファイルの「切り取り&貼り付け」と同じ結果になる)。
ただ、Nameステートメントでフォルダが作成されることはないので、その点は注意が必要。
カレントフォルダの Sample.xlsx をカレントフォルダの「テスト」フォルダ内に移動する例
Name "Sample.xlsx" As "テスト\Sample.xlsx"
ファイル名やフォルダ名の変更処理では、ファイルやフォルダが見つからなかったり、フォルダへのアクセスが制限されていたりすることによるエラー発生が多い。
そのためサンプルコードでは Errオブジェクトを用いた、エラー対応例をあわせて記載する。
※サンプルコードがエラーで中断される場合
・VBEのオプション設定を変更 参照
・プロジェクトをロックする 参照
ブックファイルを配布の際に、プロジェクトをロックしておくと、ユーザーのVBE設定にかかわらず、On Errorステートメントが有効になる。
Excelマクロ管理ツール
サンプルコード
※ファイル名の変更では、予めデスクトップに Sample.xlsx ファイルが必要
'----------------------------------------------------------------- ' ファイル名の変更 '----------------------------------------------------------------- ' ※事前に デスクトップに Sample.xlsx ファイルを準備する ' '[作成日]2012.09.27 [更新日]2024.11.28 ' https://excel.syogyoumujou.com/memorandum/name.html '----------------------------------------------------------------- Sub ファイル名を変更する() '--------------------------------------- ' デスクトップフォルダパス取得 '--------------------------------------- Dim strDesktopPath As String strDesktopPath = CreateObject("WScript.Shell").SpecialFolders("Desktop") '--------------------------------------- ' 変更前と変更後のファイル名を変数に代入 '--------------------------------------- Dim strOldPathName As String Dim strNewPathName As String strOldPathName = strDesktopPath & Application.PathSeparator & "Sample.xlsx" strNewPathName = strDesktopPath & Application.PathSeparator & "NewSample.xlsx" '--------------------------------------- ' ファイル名変更 '--------------------------------------- Dim strMessage As String '《ファイル名・フォルダ名変更》 ' ・ 引数1 : 変更前のファイル名 ' ・ 引数2 : 変更後のファイル名 strMessage = renamingFilesAndFolders(strOldPathName, strNewPathName) ' 結果表示 If strMessage = "" Then MsgBox "ファイル名の変更成功", vbInformation Else MsgBox strMessage, vbExclamation End If End Sub
'----------------------------------------------------------------- ' フォルダ名の変更 '----------------------------------------------------------------- ' 概要:デスクトップに「サンプルABC」フォルダを作成し ' そのフォルダの名前を「サンプルEFG」に変更する ' '[作成日]2012.09.27 [更新日]2024.11.28 ' https://excel.syogyoumujou.com/memorandum/name.html '----------------------------------------------------------------- Sub フォルダ名を変更する() '--------------------------------------- ' フォルダを作成 '--------------------------------------- ' デスクトップフォルダパス取得 Dim strDesktopPath As String strDesktopPath = CreateObject("WScript.Shell").SpecialFolders("Desktop") ' デスクトップに「サンプルABC」フォルダ作成 MkDir strDesktopPath & Application.PathSeparator & "サンプルABC" '--------------------------------------- ' 現在と変更後のフォルダ名を変数に代入 '--------------------------------------- Dim strOldPathName As String Dim strNewPathName As String strOldPathName = strDesktopPath & Application.PathSeparator & "サンプルABC" strNewPathName = strDesktopPath & Application.PathSeparator & "サンプルEFG" '--------------------------------------- ' フォルダ名変更 '--------------------------------------- Dim strMessage As String '《ファイル名・フォルダ名変更》 ' ・ 引数1 : 変更前のフォルダ名 ' ・ 引数2 : 変更後のフォルダ名 strMessage = renamingFilesAndFolders(strOldPathName, strNewPathName) ' 結果表示 If strMessage = "" Then MsgBox "フォルダ名の変更成功", vbInformation Else MsgBox strMessage, vbExclamation End If End Sub
'----------------------------------------------------------------- ' ファイル名・フォルダ名変更 '----------------------------------------------------------------- '[引数] ' OldPathName : 変更前のファイル名またはフォルダ名 ' NewPathName : 変更後のファイル名またはフォルダ名 '[戻り値] ' 成功 : 空の文字列 ' 失敗 : エラーメッセージ '[作成日]2012.09.27 [更新日]2024.11.28 ' https://excel.syogyoumujou.com/memorandum/name.html '----------------------------------------------------------------- Function renamingFilesAndFolders(ByVal OldPathName As String, _ ByVal NewPathName As String) As String On Error GoTo LBL_ERROR Name OldPathName As NewPathName On Error GoTo 0 Exit Function LBL_ERROR: ' 戻り値にエラーメッセージを設定 renamingFilesAndFolders = "エラー番号:" & Err.Number & vbLf & _ "エラー説明:" & Err.Description Err.Clear End Function
メモ②
Nameステートメント
ファイルまたはフォルダの名前を変更。
構文:Name oldpathname As newpathname
[oldpathname]
名前を変更するファイル名を示す文字列式を必ず指定。
フォルダ名、ドライブ名も含めて指定が可能。
[newpathname]
新しいファイル名を示す文字列式を必ず指定。フォルダ名、ドライブ名も含めて指定が可能。
既に存在しているファイル名は指定できない。