ファイル名変更Nameステートメントを用いたファイル名変更
Nameステートメントを用い、ファイル名を変更するコードとメモです。
ポイント
・Nameステートメント
・エラー処理
・文字列の比較
Nameステートメントを使用すると、ファイルやフォルダの名前を変更できるが、フォルダへのアクセスが制限されていたり、ファイルが見つからないなどのエラーが起こることが多い。Errオブジェクトを用いた、その対処法も併記する。
※サンプルコードがエラーで中断される場合
・VBEのオプション設定を変更 参照
・プロジェクトをロックする 参照
ブックファイルを配布の際に、プロジェクトをロックしておくと、ユーザーのコンピューターのVBE設定にかかわらず、On Errorステートメントが有効になる。
Excelマクロ管理ツール
サンプルコード
※予め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」:string1はstring2未満
「0」:string1とstring2は等しい
「1」:string1はstring2を超える
Null値:string1またはstring2がNull値