質問: 0 To objtag.Length - 1 If InStr(objtag(i).outerHTML, "13:30") > 0 Then objIE.Document.Script.setTimeout "javascript:document.getElementsByTagName('a')(" & i & ").click()", 200 End If Next i Sleep 1000 End sub ```
回答: まず、求めている回答がわかりません、 該当ページから13:30である部分を見つけ出してクリックする部分をどこかからコピペしてきたコードで 作ったがうまく動かないのでしょうか? それとも直接のDOM操作ではうまく行かなかったためDOM操作でjavascriptを埋め込むコードを 自力でかける技術まではお持ちなのでしょうか? そこまではできるのであれば、 SVGタグについての理解が及んでいないかと思われます。 「svgタグで記載されている画像」と表現なさっておられますが、 SVGタグの中身はXMLであり、殆どの場合他の画像ファイルのように単体のバイナリファイルではありません、 HTML内に静的に埋め込まれている場合や該当ページのように動的に生成される方法で使用されることが多く、 単に元のURLへアクセスして保存するという方法が困難です。 保存を行う場合はページ表示(XML生成)後にDOM操作にて該当のDOMを操作しXMLを取り出すことにより可能です。 この手順で保存した場合は取得出来たものはXMLで記載されたベクターデータであり、 VBAでのラスタデータ(ビットマップデータ)化は難しい為、 表示にはSVG対応が必要となりますので、 エクセルシート上にMicrosoft Web Browser ActiveXコントロールを貼り付け、 そのソースを編集することによりシート上で表示が可能です、 もう一つの手法としては、DOM操作にてPNG等の画像化してダウンロードするJavascriptのコードを埋め込むという手もあります、この場合はJavascriptのコーディングも必要となる代わりに、 通常の画像ファイルとなりますので後の取扱が楽になります。 また、「そこまで本気の操作はいらないがとりあえず保存したい」という場合は、 IEを操作し画面いっぱいに表示、DOMを操作しSVGを画面いっぱいに表示させ、 スクリーンショットを撮る操作を行うという安易な方法もあります。 いずれにせよ結構高度(というかややこしい)事をしておりますので、 もしコピペしたコードを深い理解なく使用しているレベルの場合は、 まずは普通のページのクローリングから勉強なさらないと無理かと思われます。