フォルダ内にある画像ファイルを検索して、画像フォーマットを変換します。
例【変換前】

【変換後】

【サンプルプログラム】
Sub ImgConv()
' フォルダ内のBitmapファイルをPNGファイルに変換
FileImgConv "C:\ExcelVBA\Img", "bmp", "png"
End Sub
' ------------------------------------------------------------
' 説明:ファイルを検索して、画像変換をします
' 引数:1:ファイルパス
' 2:変換元の拡張子(拡張子でフィルタリング)
' 3:変換後の拡張子
' 補足:サブフォルダは検索しません
' ------------------------------------------------------------
Sub FileImgConv(file_path As String, find_exp As String, conv_exp As String)
Dim path As Variant
Dim expname As String
Dim out_filename As String
Dim result As Boolean
Dim fso As Scripting.FileSystemObject
Set fso = New Scripting.FileSystemObject
' フォルダ内のファイルを検索
For Each path In fso.GetFolder(file_path).Files
' 拡張子を小文字で取得
expname = LCase(fso.GetExtensionName(path))
' 拡張子が一致した場合は変換
If expname = find_exp Then
' 拡張子を変更したファイル名を取得
out_filename = FilenameNewExtension(CStr(path), conv_exp)
' 画像変換
result = ConvertImageFormat(CStr(path), out_filename, conv_exp)
' 画像変換が成功したら、元のファイルをゴミ箱に削除
If result = True Then
DeleteFileRecycle CStr(path)
End If
End If
Next
End Sub
【補足】
Scripting.FileSystemObject を使用しています。
初期設定では、エラーが発生するので、参照設定「Microsoft Scripting Runtime」の設定が必要です。
FilenameNewExtension 関数は、拡張子を変更したファイル名を作成する を参照してください。
ConvertImageFormat 関数は、画像ファイルのフォーマット変換 を参照してください。
DeleteFileRecycle 関数は、ファイルの削除 を参照してください。


コメント