拡張子jpgの画像を保存したら拡張子jpegになる件


テクニックというより設定の話です。

ネット上の画像を保存するとき、画像を右クリックして[名前を付けて保存]を実行します。このとき、拡張子jpgの画像が、拡張子jpegで保存されてしまうことがあります。しかも、パソコンによっては正常にjpgで保存されたり、ある日急にjpeg形式で保存されるようになったり・・・と、実は長いこと悩んでいました。

で、気になって調べてみたら、案の定レジストリの設定によっては、そういう現象が発生すると書いてありました。さらに、何かのアプリケーションをインストールした結果、勝手にレジストリが書き換わってしまうこともあると。問題のレジストリは、

HKEY_CLASSES_ROOT\MIME\Database\Content Type\image/jpeg\Extension

です。ここの値が.jpegだと、jpg形式の画像にjpegの拡張子が設定されます。

これだけではナニですので、レジストリをチェックしてjpgに直すコードをご紹介します。VB6で動作確認しましたが、VBAでも動くと思います。

Private Sub Command1_Click()
    Dim WshShell, Key As String
    Key = "HKCR\MIME\Database\Content Type\image/jpeg\Extension"
    Set WshShell = CreateObject("WScript.Shell")
    Select Case WshShell.RegRead(Key)
    Case Is = ".jpeg"
        If MsgBox("jpegが登録されています。jpgにしますか?", _
                                                vbYesNo + vbQuestion) = vbYes Then
            WshShell.RegWrite Key, ".jpg", "REG_SZ"
        End If
    Case Is = ".jpg"
        MsgBox "jpgが登録されています", vbExclamation
    Case Else
        MsgBox "予期せぬ値です", vbExclamation
    End Select
    Set WshShell = Nothing
End Sub

レジストリを変更したら再起動してください。