VBAでwebサイト内のgif画像をbmp形式に変換する方法

このQ&Aのポイント
  • webサイト内のgif画像をダウンロードして保存する際に、VBAを使用してURLDownloadToFile APIを利用する方法を解説します。
  • IEで表示されているページのgif画像をbmp形式に変換して保存することが可能かどうかについて、初心者でもわかりやすく説明します。
  • VBAを使用してgif画像をbmp形式に変換し、保存する方法について詳しく解説します。
回答を見る
  • ベストアンサー

VBA gif形式 → bmp形式に変換

こんばんは。いつもお世話になっております。 今回はwebサイト内のgif画像をダウンロードする際の 形式変換についてご教授お願いいたします。 ---------------------------------------------------------- strP_URL = "http://xxxxx.xxxxx" strFNAME = ThisWorkbook.Path & "\" & "test" & ".gif" 'URLDownloadToFile API をコールする returnValue = URLDownloadToFile(0, strP_URL, strFNAME, 0, 0) ------------------------------------------------------------ 上記のような感じでIEで表示されているページのgif画像を保存しています。 このgif画像をbmpにコンバートして保存することは可能でしょうか? 初心者のため説明が伝わりにくいかもしれませんが、 わかる方いましたら宜しくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.2

#1です。調子に乗って、 こちらで紹介している、フリーのクラスを使用します http://okwave.jp/qa/q7523814.html 余分なところが長いですが、やっている事は単純です。(面倒な事はクラスがやってくれます) なお、他にもtif形式にも対応しているそうです。 'http://arkham46.developpez.com/articles/office/clgdiplus/ 'Le module clGdiPlus au format cls pour toutes versions d'Office.v2.0 (11/01/11)をダウンロードして解凍 'Excelにインポート '#Const Access = True -> False に 'Microsoft Forms 2.0 Object Libraryに参照設定 Sub test4() Dim clGdip As ClGdiPlus Dim retBool As Boolean Dim OpenFileName As Variant, vntFileName As Variant Dim srcfile As String, destfile As String Dim pictType As String Const jpegQuality As Long = 90 OpenFileName = Application.GetOpenFilename("画像ファイル,*.jpg;*.bmp;*.png;*.gif") If OpenFileName <> False Then srcfile = OpenFileName Else Exit Sub End If Set clGdip = New ClGdiPlus retBool = clGdip.OpenFile(srcfile) If Not retBool Then Exit Sub 'ファイルを保存するダイアログを開きます vntFileName = _ Application.GetSaveAsFilename(InitialFileName:="Picture.jpg" _ , FileFilter:="画像ファイル,*.jpg;*.bmp;*.png;*.gif" _ , FilterIndex:=1 _ , Title:="保存先の指定" _ ) If vntFileName <> False Then Select Case StrConv(Right(vntFileName, 3), vbUpperCase) Case "JPG" pictType = "JPG" Case "BMP" pictType = "BMP" Case "PNG" pictType = "PNG" Case "GIF" pictType = "GIF" Case Else MsgBox "サポートされていない画像形式です" Exit Sub End Select destfile = vntFileName Else Exit Sub End If If pictType = "JPG" Then retBool = clGdip.SaveFile(destfile, "JPG", jpegQuality) Else retBool = clGdip.SaveFile(destfile, pictType) End If Set clGdip = Nothing End Sub

tokyo2199
質問者

お礼

ありがとうございます。画像処理はやはり初心者の私に敷居が高そうですね。APIなど絡んでくると理解するまでに時間がかかります。mitarashi様のご指南下さったコードは大変良い勉強材料となりそうです。少しずつ勉強していきたいと思っています。 とりあえずクラスをインポートし、参照設定後コードを実行させてもらったのですが、jpgへ変換されてしまいます。bmpへ変換したいのですが、何か手を加える必要があるのでしょうか?勉強不足のため質問ばかりで申しわけありません。お時間があるときにでも追記頂ければ幸いです。

その他の回答 (1)

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

もっと簡単な方法があるかもしれませんが 'http://okwave.jp/qa/q5124395.html 'こちらのKenKen_SPさんのコードを借用します 'API宣言部に追加要 上記コードの先頭の方に仲間が居るので、そこに追加します 'CreateBitmapFromFile Private Declare Function GdipCreateBitmapFromFile Lib "gdiplus" _ (FileName As Any, bitmap As Long) As Long 'CreatHBITMAPFromBitmap Private Declare Function GdipCreateHBITMAPFromBitmap Lib "gdiplus" _ (ByVal bitmap As Long, hbmReturn As Long, _ ByVal background As Long) As Long 下記の様なコードで変換ができました。 最近のWindowsではCドライブ直下に簡単にアクセスできないと思いますので、適宜書き換えてお試し下さい。 Sub sample2() If sample3("c:\test.gif", "c:\test.bmp") Then MsgBox "成功" Else MsgBox "失敗" End If End Sub Function sample3(srcfile As String, destfile As String) As Boolean Dim srcBmp As Long Dim hBmp As OLE_HANDLE 'GDI を初期化する If GDIplus_Initialize() = False Then MsgBox "GDI+ を初期化できません", vbCritical Exit Function End If 'ファイルからビットマップオブジェクトに読み込む If GdipCreateBitmapFromFile(ByVal StrPtr(srcfile), srcBmp) <> 0 Then Call Gdiplus_Shutdown Exit Function End If 'ビットマップオブジェクトのハンドル取得 If GdipCreateHBITMAPFromBitmap(srcBmp, hBmp, &HFFFFFF) <> 0 Then Call Gdiplus_Shutdown Exit Function End If If SaveImageToFile(hBmp, destfile, "bmp") = True Then sample3 = True ' GDI+ を終了させる(必ず呼び出すこと) Call Gdiplus_Shutdown End Function

関連するQ&A

  • bmp形式&gif形式の画像が見れません。

    あるサイトで画像を保存しようとしましたら、bmp形式とgif形式でしか保存できません。bmp形式で画像を保存してマイピクチャで画像を開こうとしましたら、保存したはずの画像が真っ白になってしまい見ることが出来ません。どうしたら見ることが出来ますか?gif形式で画像を保存しても真っ白になってしまいます。何方かご解決方法を教えて下さい。宜しくお願いします。

  • gif画像がbmpで保存されてしまう

    HPなどの画像をダウンロードすると、gif形式の画像さえもbmpで保存されてしまいます。 なぜでしょうか? gifで、ダウンロードする方法を教えてください。 拡張子を変えようとしても拡張子の欄はbmpのみになっています。

  • GIFがBMPになります。

    ウェブ上の画像を保存するときに、 ついさっきまでは普通だったのに GIF画像を保存しようとすると、いつもだったら 「○○○.gif」になってたのに何度色々なGIF画像でやっても 「無題.bmp」になってしまいます。 PNGやJPEGでは普通に出来ます。 どうしてこのような状態になったのでしょうか? 元に戻す方法を教えてください!

  • gif形式で保存が出来ない

    ネットから動く素材を保存しようと思ったら、bmp形式でしか保存できなくなりました。 前はgif形式で保存できたはずなのですが、どうして出来なくなったのか分かりません。 システムの復元をしてみましたが、直りませんでした。 どうしたらgifで保存が出来るようになるのでしょうか? 教えてください。 IE6  windousXP を使用しています。 よろしくお願いします。

  • gif画像の保存形式がbmpになってしまいます。

    webアイコンなどを保存する時、 なぜかgifアニメ画像やアイコンがbmp化されて ファイルに保存することになってしまい困ってます。 先日までちゃんと保存できてましたが最近そういう事が 多くなっています。何か設定があるのでしょうか? それともうちのPCバグでしょうか? OSはwin2000です。

  • bmp→gifへ

    全く同じ質問が以前にもあったのですが、動く画像を動くまま保存したいのですが、gifが保存後bmpになってしまいます。 そこで「ツール」→「インターネットオプション」→インターネット一時ファイル「ファイルの削除」→「OK」をしようとするのですが、「OK」をクリックするとしばらく動かなくなり「応答なし」と表示されます。何度試しても同じです。どうしたらいいのでしょうか?

  • gif変換が・・

    最近、WindowsMEを再セットアップしたんですが、再セットアップの際に、画像の変換機能が失われてしまったようなのです。 詳しく説明しますと、MEは画像保存の際に形式を変換(bmp→jpgなど)して保存できるのですが、再セットアップしてからその機能が使えなくなってしまいました。gif変換したいのですが、わざわざツールを使うのは面倒なので、この機能がないと非常に辛いです。どなたか解決法を知っている方いましたらよろしくおねがいします。どうすれば戻るのでしょう?

  • 画像がBMPでしか保存できません!

    ネットで画像を保存するとBMP以外選べないです。 GIFやJPGどの形式のものでもBMPになってしまいます。 なにが変わってしまったんでしょうか? XPです。

  • GIF、BMP、JPEGについて

    画像ファイルの形式としてGIF、BMP、JPEGとありますが、これらはどんなとき(ソフト)にどの形式で保存したほうがよいのか、どんな場合にどの形式がよく使われているのかなど基本的な考え方があったならばお教えいただきたいのですが、宜しくお願いいたします。

  • JPG、GIF,BMP,PNGの違いは何ですか?

    JPG、GIF、BMP、PNGの違いは何ですか? ※それぞれ”何のために作られた”画像形式なんですか?