トップ > 備忘録 > ファイル名の変更

ファイル名変更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]
新しいファイル名を示す文字列式を必ず指定。フォルダ名、ドライブ名も含めて指定が可能。
既に存在しているファイル名は指定できない。


Errオブジェクト

参照


ページトップへ戻る
Copyright(C) 2009- 坂江 保 All Rights Reserved.