構文
Name OldNameAs NewName
OldName・・・・移動元ファイルをフルパスで指定
NewName・・・・移動先をファイル名も含めてフルパスで指定
NewName・・・・移動先をファイル名も含めてフルパスで指定
FileNameステートメントは本来、ファイル名を変更するステートメントです。
引数NewNameにOldNameとパスが異なれば、結果的にファイル名を移動する形になります。
Nameステートメントのサンプルコード
Public Sub sample() '■ファイル名を変更する1.xlsx→2.xlsx Name ThisWorkbook.Path & "\" & "1.xlsx" As _ ThisWorkbook.Path & "\" & "2.xlsx" '■ファイル名を移動するThisWorkbook.path→C\:vba Name ThisWorkbook.Path & "\sample1.xlsx" As _ "C:\vba\sample1.xlsx" '■ファイル名を名前変更して移動するThisWorkbook.path→C\:vba Name ThisWorkbook.Path & "\sample1.xlsx" As _ "C:\vba\sample2.xlsx" '■移動先に同一ファイルがあった場合は実行時エラー '58':既に同名のファイルが存在しています。 Name "C:\vba\sample1.xlsx" As _ "C:\vba\sample2.xlsx" '■移動元のファイルが存在しない場合は、実行時エラー '53':ファイルが見つかりません。 Name ThisWorkbook.Path & "\" & "aaa.xlsx" As "C:\vba\sample.xlsx" End Sub
注意点
- フルパスで指定せず、パスを省略するとカレントフォルダが対象になります。
- 移動後のファイル名は元のファイル名と異なっていても問題ありません。
(名前を変更して移動が可能です) - 移動先に既にファイルがある場合はファイルコピーの場合と異なり、エラーが発生します。
実行時エラー ’58’:既に同名のファイルが存在しています。 - 事前にDir関数でファイルが存在するかどうかチェックした方が望ましいです。
関連記事
- ファイルまたはフォルダを抽出する【Dir関数】【ExcelVBA】
- ファイルをコピーする【FileCopyステートメント】【ExcelVBA】
- フォルダ内のファイルを、別フォルダへ一括コピペするマクロ【ExcelVBA】
コメント