拡張子を変更したファイル名を作成する

ファイル名から、同じファイル名で拡張子を変更したファイル名を作成する処理を関数化。
例: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」の設定が必要です。

コメント