Nameステートメントを用いたファイル名変更

ファイル名変更

 Nameステートメントを用い、ファイル名を変更するコードとメモです。

ポイント

 ・Nameステートメント
 ・エラー処理
 ・文字列の比較

 Nameステートメントを使用すると、ファイルやフォルダの名前を変更できるが、フォルダへのアクセスが制限されていたり、ファイルが見つからないなどのエラーが起こることが多い。Errオブジェクトを用いた、その対処法も併記する。

※サンプルコードがエラーで中断される場合
 ・VBEのオプション設定を変更 参照
 ・プロジェクトをロックする 参照
 ブックファイルを配布の際に、プロジェクトをロックしておくと、ユーザーのコンピューターのVBE設定にかかわらず、On Errorステートメントが有効になる。


サンプルコード

※予めCドライブ直下に「sample.xls」ファイルが必要:[C:\sample.xls]
「Sample.xls」を「Sample_After.xls」に変更

Sub Change_FileName_Sample()
    Dim strOldPN As String
    Dim strNewPN As String
    Dim strRet As String
    strOldPN = "C:\Sample.xls"
    strNewPN = "C:\Sample_After.xls"
    If strOldPN = "" Or strNewPN = "" Then
        MsgBox "ファイル名が指定されていません": Exit Sub
    End If
    If StrComp(strOldPN, strNewPN, vbBinaryCompare) = 0 Then
        MsgBox "同じ名前です": Exit Sub
    End If
    strRet = Change_FN(strOldPN, strNewPN)
    If strRet <> "" Then
        MsgBox strRet, vbExclamation + vbOKOnly
    End If
End Sub
'-------------------------------------------------------------------------------------------------------

Function Change_FN(ByVal OldPName As String, ByVal NewPName As String) As String
    On Error GoTo ERROR
        Name OldPName As NewPName
    On Error GoTo 0
Exit Function
ERROR:
    Change_FN = Err.Description
    Err.Clear
End Function

メモ

◆Nameステートメント
 ファイルまたはフォルダの名前を変更。

 構文:Name oldpathname As newpathname

 [oldpathname]
  名前を変更するファイル名を示す文字列式を必ず指定。
  フォルダ名、ドライブ名も含めて指定が可能。
 [newpathname]
  新しいファイル名を示す文字列式を必ず指定。フォルダ名、ドライブ名も含めて指定が可能。
  既に存在しているファイル名は指定できない。

 【備考】
  ・[newpathname]に[oldpathname]と違うフォルダを指定した場合、ファイルを移動する。
   つまりファイルの「切り取り&貼り付け」と同じことができる。
  ・Nameステートメントはファイルやフォルダを新しく作成することはない。

◆StrComp関数
 文字列比較の結果を表す値を返す。

 構文:StrComp(string1, string2[, compare])

 [string1]
  任意の文字列式を必ず指定。
 [string2]
  任意の文字列式を必ず指定。
 [compare]
  省略可能。文字列比較モードを指定する番号を設定。Null値の場合は、エラーが発生。
  省略した場合Option Compareステートメントの設定により比較モードが決定。
  【設定値 / 値 / 内容】
   vbUseCompareOption / -1 / Option Compareステートメントの設定を使用して比較。
   vbBinaryCompare / 0 / バイナリ モードで比較。※
   vbTextCompare / 1 / テキスト モードで比較。※
   vbDatabaseCompare / 2 / Access専用。データベースの設定に基づいて比較。
 ※テキストモードでは「大文字・小文字」「全角・半角」「ひらがな・カタカナ」を同じものと判定する。

 【戻り値】
  「-1」:string1string2未満
  「0」:string1string2は等しい
  「1」:string1string2を超える
  Null値:string1またはstring2がNull値

◆Errオブジェクト
 参照

Excel Tips for Teachers

Copyright (C) 2009- 坂江 保 All Rights Reserved.