フォルダの画像ファイルを別のフォーマットにまとめて変換

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

例【変換前】

【変換後】

【サンプルプログラム】

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 関数は、ファイルの削除 を参照してください。

コメント