- 締切済み
WebBrowser上でjavascriptを追加するには
表題でご存知の方いらっしゃいましたらお願いします。 現在ExcelのVBAからWebBrowserを使っています。 最終的な目的は「WebBrowser上でクリックした画像のURLを クリップボードに保存したい」ですが、いろいろとその前段階で沈没寸前です。 WebBrowserのイベントに該当するものもなく、また開いているページの イベントも拾う方法がわかりませんで、 調べた結果、JavaScriptと連携させることを思いました。 既存のWebページを開いて、そこにJavascriptを埋め込んでと 思ったのですが、できません。 厳密にはinnerhtmlで追記できたのですが、無反応です。 そこでJscriptなども試しましたがイベントを検知できるやり方ができませんでした。 Javascriptを埋め込む方法をご存知の方、または別のアプローチが 有るという方どうぞお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- seastar3
- ベストアンサー率69% (99/142)
Azzz_さん、とりあえず抽出できるようになり、おめでとうございます。実は自作HTML以外を対象にIEオブジェクトを操作したことがないので、WebBrowserのプロパティ(変数名)とメソッド(命令)はよく知りません。 一応、参考URLのアドバイス情報を見つけましたので、参考にして下さい。私が目を通した限りでは、多少ややこしそうですね。 WebBrowser本体をHtmlElementに取り込ませて、マウス動作を報告させながら、目的の状態になったときにリンク先を取り出せばよいようです。 WebBrowserのプロパティをダンプしながら、ふさわしいタイミングでイメージタグの情報を呼び出せるように根気強くテストしてみて下さい。
- seastar3
- ベストアンサー率69% (99/142)
済みませんが、添字に矛盾があることに気がつきました。 イメージオブジェクトは0番から始まるのでnを0からLength-1でループさせます。 For n = 0 To Me.WebBrowser1.Document.images.Length - 1 Set objIMG = Me.WebBrowser1.Document.images(n) JouhouIMG = objIMG.Title & vbCRLF JouhouIMG = objIMG.src MggBox JouhouIMG Next セルへの埋め込みは1つ増やして Cells(n + 1, 1) = objIMG.Title Cells(n + 1, 2) = objIMG.src が1行目からになります。
補足
回答ありがとうございます。 ご指摘の方法も試してみました。 一部修正してできました。 ただ質問にも挙げました、「選んだ画像のみ」のURLが拾いたいのですが 可能でしょうか? (説明の仕方が悪いかもしれませんが、これ(クリックした画像を検知)を実現するにはJavascriptが 必要かと思っていますが、これも思いこみかもしれません) 引き続きましてお願い致します。
- seastar3
- ベストアンサー率69% (99/142)
マウスのイベントドリブンはちょっと分からないので、イメージオブジェクトの抽出プログラムを挙げてみます。 For n = 1 To Me.WebBrowser1.Document.images.Length Set objIMG = Me.WebBrowser1.Document.images(n) JouhouIMG = objIMG.Title & vbCRLF JouhouIMG = objIMG.src MggBox JouhouIMG Next つまり、このブックのウェッブブラウザ1の中のイメージオブジェクトを順番に取り出しては、タイトルとこのURLを表示させる繰り返し処理です。 表示ではなくセルへ埋め込むときは、 Cells(n, 1) = objIMG.Title Cells(n, 2) = objIMG.src をループの中に追加すれば、アクティブシートのA列に画像名、B列にURLを埋めた表ができます。したがってその一覧表から該当するURLを選りだして使うことになります。
お礼
ありがとうございます。 URLは結構敷居が高いですね(涙!) ちょっと頑張ってみますが、同時に別方法として バックグランドで一度画像をすべてPCにダウンロードして それを再度Imageコントロールで取得してという手段も検討中です。 また何かあればお願いします。 ありがとうございました。