Memorandum

ファイル名変更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オブジェクト

 参照

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