• 締切済み

VBAで抽出した画像の数枚をフォームに表示

VBAで指定したURLにある画像を抽出し、その画像をExcelシートに貼るものを作りましたが、そのうち3枚くらいをユーザフォーム上にも表示したいのですが、どのように記述したらよいでしょうか? 教えていただけたら幸いです。

みんなの回答

回答No.1

こんにちは。 Q9322829の続きとして回答します。 > VBAで指定したURLにある画像を抽出し、その画像をExcelシートに貼るものを作りましたが、 Q9322829にてご提示の記述は、 自PC内にファイルとしてを画像を取り込むのではなく、 画像のURLだけを扱って、直接シート上に図を挿入するというものですね。 となると、 > そのうち3枚くらいをユーザフォーム上にも表示したいのですが、 WebBrowserコントロールでNaviするぐらいかな、と思いますが、 この方法だとフォームのデザインで難儀するかも知れません。 ファイルとして取り込んであれば、 Imageコントロール等を配置して、 .Image1.Picture = LoadPicture("ファイルパス") みたいに簡単な処理で済ますことが出来ますし、 画像のサイズ指定や、フォームのデザインについても融通が利きます。 ですので、一旦は、Q9321989に立ち戻って、 画像ファイルをダウンロードする方法について再検討された方が、 今後の機能追加を考えると有利になる場面が多いとは思います。 ただ、今回は今回の、ご要望に素直にお応えすることにします。 Q9322829での、 > まず、下準備として、ご提示のコードの直下に、 >   DoEvents >   s.AlternativeText = e.href > 以上の2行を書き加えてから画像を取り込んでください。 > これによって、挿入された図の属性として、 > 画像のURLを保持します。 を前提(must です)としています。 ユーザーフォームのコントロールをデザインします。  UserForm1  ┣ WebBrowser1  ┣ WebBrowser2  ┗ WebBrowser3 コントロールの名前に齟齬が生じないように、 必要なら、下記コード側のオブジェクト名を書換えてください。 以下、UserForm1の  WebBrowser1、WebBrowser2、WebBrowser3 に、シート上の図の内、 .AlternativeTextに"*.jpg" "*.jpeg"を登録してある画像の 最初に見つかる3点 を表示する記述です。 ' ' // Sub Re9322886w() Dim colCtrl As MSForms.Controls Dim s As Shape Dim cnt As Long   Load UserForm1   Set colCtrl = UserForm1.Controls   For Each s In ActiveSheet.Shapes     If s.AlternativeText Like "*.jpg" Or s.AlternativeText Like "*.jpeg" Then       cnt = cnt + 1       With colCtrl("WebBrowser" & cnt)         .Visible = True         .Navigate s.AlternativeText         Do While .Busy Or .ReadyState < 3           DoEvents         Loop       End With     End If     If cnt = 3 Then Exit For   Next   UserForm1.Show End Sub ' ' // 他、 仮に、3つではなく、1つでもよければ、図をコピーして Imageコントロール上に表示させることもできます。 或いは、 Excelブックを保存してある圧縮フォルダを解凍するなどして、 Imageコントロール3つに表示させることもできます。 しかし、どちらも、難度は高く、また、処理が不安定な面も持ちます。 ということで、今回は、 WebBrowserコントロールでの表示方法のみ紹介しましたが、 お奨めは画像ファイルをダウンロードする設計、ということになります。 以上です。

関連するQ&A

  • (vba) 画像抽出時、ファイル名を表示したい

    vbaで指定するURLにある画像を抽出するものをつくりました。 一部------------------------------------ For Each e In oIE.Document.getElementsByTagName("img") If LCase(e.nameProp) Like "*.jpg" Or LCase(e.nameProp) Like "*.jpeg" Then Set s = ActiveSheet.Shapes(ActiveSheet.Pictures.Insert(e.href).Name) ------------------------------------ ユーザフォーム上にvbaで抽出したファイル名(例:abc.jpg等)を表示させたいのですが、どのように拡張記述すればよいでしょうか? 教えていただけたら幸いです。 理想は、ユーザフォームに ****.jpg ****.jpg ・・・・  トータル◯件 というようなのをフォーム上に出せたらうれしいです。

  • VBAでボタンを押すと指定サイトの画像抽出

    お力を貸してください。 エクセルVBAで、テキストボックスとボタンを配置しました。 テキストボックス内にURLを入れてボタンを押すと、指定サイトに表示されている すべての画像を抽出して、エクセルに貼り付けるVBAを作りたいのですが、どのようなソースにすればよいでしょうか? 教えて頂けたら幸いです。 よろしくお願いいたします。

  • EXCELのShape画像をVBAのフォームに表示するには

    EXCELのShape画像をVBAのフォームに表示するには はじめまして EXCEL2007-VBAを勉強中です。 EXCELのShape画像をVBAのフォームへ表示したいのですが、どのように書けば よろしいのでしょうか

  • VBAで実行押すまでExcel非表示にしたい

    VBAでユーザフォームを作成しました。 Excelを立ち上げるとExcelシートの前にユーザフォームが出る状態なのですが、 ユーザフォームの実行ボタンを押すまでは非表示にしたいのですが、どのような記述をしたらよいでしょうか? マクロ的に実行ボタンを押すと結果が、Excel上に反映されるので、実行ボタンを押すまで非表示であれば大丈夫です どうか教えてください。

  • vba エクセルに記載のURLを順次見に行き画像を

    エクセルのB列に複数のURLが入っています。 1 http://~~~ 2 http://~~~ 等々 ユーザフォームのボタンを押すと、このURLを順次見に行き、別シートに シート番号1   上の1のURL内にある画像を張っていく(並べていく) シート番号2   上の2のURL内にある画像を張っていく(並べていく) というのを終わるまで繰り返していくVBAを作りたいです。 シートはURLの数だけ増やしていくイメージです。 どのようなプログラムにしたらよいでしょうか?

  • ユーザーフォームの表示について

    Aというブックを選ぶと車というシートが一番最初にあるのですが、 これをvbaでshowと記述しても一旦他のシートを選んでからでないと 表示されません。 ブックを開いた瞬間にユーザーフォームを表示したいのですが、何か方法はあるでしょうか? どうしてもうまくいきません。。 やりたいことは、ブックを開いたら、フォーム(自分で作ったユーザーフォーム)を開いたときから表示させたいのです。知ってる方がいたら教えてくれると助かるのですが。

  • (VBA) 実行すると指定URLにある画像を保存

    タイトルの通りなのですが、vba で、実行すると、指定のURLにある「jpg」,「jpeg」画像を抽出し、指定フォルダに保存するものを作りたいのですが、どのようなコード記述にすればよいでしょうか? 教えていただけると幸いです。

  • ユーザーフォームに画像を表示

    Excel2003のユーザーフォームに関しての質問です。 ユーザーフォームに画像を表示させるコントロールがあるのですが そのコントロールにシート内にある画像を表示させることは可能なのでしょうか。 (フォルダなどにある画像を表示させることは出来ます) もしそのような方法があるのでしたら 簡単なコードなどを教えていただけたらと思います。 よろしくお願いいたします。

  • VBAで画像を表示する方法

    VBA初心者です。ExcelのVBAでプログラミングの練習をしています。 早速ですが質問させてください。 ユーザーフォーム上にコマンドボタンをクリックすることにより画像を表示させることはできるのですが、これをユーザーフォームを開いた瞬間に自動的に表示させる方法はないのでしょうか? ちなみに現在は以下のようにしています。 Private Sub CommandButton1_Click() Image1.Picture = LoadPicture(" ") End Sub インターネットで調べてみても見つからないので質問させてもらいました。分かりにくい説明でしたらすみません。

  • Excel VBAでユーザーフォームだけ表示

    Excel VBAでユーザーフォームだけ表示の設定をしました。エクセルの中身や、コードを修正したいのですが、エクセルを開くことができません。なんとかエクセルを開くことはできませんでしょうか?

専門家に質問してみよう