ファイル名から、同じファイル名で拡張子を変更したファイル名を作成する処理を関数化。
例:FilenameNewExtension(“C:\ExcelVBA\FileTest\テスト\テスト0003.xlsx”, “pdf”)
戻り値: C:\ExcelVBA\FileTest\テスト\テスト0003.pdf
' ------------------------------------------------------------
' 説明:ファイル名から、同じファイル名で拡張子を変更したファイル名を作成
' 引数:1:変換前のファイル名
' 2:変換する拡張子
' 戻値:変換後のファイル名
' ------------------------------------------------------------
Function FilenameNewExtension(filename As String, extension As String) As String
Dim fso As Scripting.FileSystemObject
Dim FolderName As String
Dim BaseName As String
' ファイル名が未指定の場合は何もなしで返す
If filename = "" Then
FilenameNewExtension = ""
End If
' オブジェクトを作成
Set fso = New Scripting.FileSystemObject
' ファイルパスを取得
FolderName = fso.GetParentFolderName(filename)
' 拡張子の無いファイル名を取得
BaseName = fso.GetBaseName(filename)
If FolderName <> "" Then
If extension <> "" Then
' ファイルパス+拡張子の無いファイル名 + 新しい拡張子を返す
FilenameNewExtension = FolderName & "\" & BaseName & "." & extension
Else
' ファイルパス+拡張子の無いファイル名を返す
FilenameNewExtension = FolderName & "\" & BaseName
End If
Else
If extension <> "" Then
' 拡張子の無いファイル名 + 新しい拡張子を返す
FilenameNewExtension = BaseName & "." & extension
Else
' 拡張子の無いファイル名を返す
FilenameNewExtension = BaseName
End If
End If
End Function
【補足】
Scripting.FileSystemObject を使用しています。
初期設定では、エラーが発生するので、参照設定「Microsoft Scripting Runtime」の設定が必要です。


コメント