- 締切済み
VB初心者です
エクセルVB初心者です。 ウェブサイトから情報を取ろうと思いました。 <dt class="market zsg-fineprint"> <!-- Market Text & tooltip --> <!-- Non-Market Text & Tooltip --> Market <sup>®</sup>: $1.18M</dt> <dt class="market zsg-fineprint"> から"1.18M"を取り込んで現在のセルから右に6個目のセルにコピペしようと思い、次のようなSubを作りましたが、うまく行きません。 Sub getMarket(objIE As Object) Dim MarketPosition As Integer Dim DollarPosition As Integer MarketPosition = InStr(1, objIE.Document, "Market") DollarPosition = InStr(marketPosition, objIE.Document, "$") ActiveCell.Offset(0, 6) = Mid(objIE.Document, DollarPosition + 1, 4) End Sub うまく動作させるためにはどうしたらよいでしょうか?
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- jcctaira
- ベストアンサー率58% (119/204)
hyokoyamaさん はじめまして。 単純に基本的なことが理解できていないかと思います。 「objIE.Document」とは何かの値を返すと思っているのでしょうか? ※InStr(1, objIE.Document, "Market") という命令なので おそらくHTMLの文字列をイメージしているのだと思います。 「objIE.Document」はIEオブジェクトのドキュメントクラスです。 クラスなのでメソッド・プロパティが使用できます。 hyokoyamaさんがイメージした【HTML】を取得したいのなら objIE.Document.body.innerHTML で取得できます。 その他にも objIE.Document.body.innerText にすると表示する文字列だけ取得できます。 よってプログラムの修正は以下のようになります。 MarketPosition = InStr(1, objIE.Document, "Market") DollarPosition = InStr(marketPosition, objIE.Document, "$") ActiveCell.Offset(0, 6) = Mid(objIE.Document, DollarPosition + 1, 4) ↓ MarketPosition = InStr(1, objIE.Document.body.innerHTML, "Market") DollarPosition = InStr(marketPosition, objIE.Document.body.innerHTML, "$") ActiveCell.Offset(0, 6) = Mid(objIE.Document.body.innerHTML, DollarPosition + 1, 4) 試してみて下さい。