- ベストアンサー
エクセルVBAのプログラムで
特定のHTML構文中のテキストを読みとってセルに入力するプログラムを作りたいのですがどうしたらいいでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>下の部分が分りませんでした。 読込が完了するまで待つ処理です。 #2の方がおっしゃる様に、どの部分をどのように取り出すかは、特に指定がなかったので、書いていませんが、 IE.Document.body.innerHTML でbodyの内容が取り出せます。 基本的に、DOMで任意の部分が取り出せます。 IDとか特定のタグが付いているとより直接的に取り出せます。
その他の回答 (3)
- めとろいと(@naktak)
- ベストアンサー率36% (785/2139)
No.2で記されている方法で大抵取得は可能です。 但し、HTMLの記述が正しい事が前提です。 サイトにもよりますが、たとえばテーブルタグで、 </td>や</tr>が無い場合、別な所までテキストとして認識してしまいます。 あくまで、正しい文法でHTMLが構築されている事が前提になります。
- imogasi
- ベストアンサー率27% (4737/17069)
テキストを囲むタグは一定していない(1つに決まってない)ので、テキストが始まる目印が無いように思います。その区別法(ロジック)を聞いておられるのでしょうか。 <>と<>で囲まれた情報を省いて、残りをテキストだといえるでしょうか。IEのソースを数例見ると、ほぼそれで行けそうですが。 であれば (A)Instr関数で<を見つける (B)その後Instr関数で>を見つけ、>までは捨てる。<>も含めて (C)次の<までは、テキストとして拾う エクセルのセルにセットする セルを示す行ポインタに+1 (D)終わりまで繰り返す ようなロジックでしょうか。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
Set IE = CreateObject("InternetExplorer.Application") のようにしてIEオブジェクトを使うことができます。 IE.Navigate URLアドレス '読込 While IE.busy: Wend While IE.Document.readyState <> "complete": Wend その後は、思いのまま^^
お礼
いつもありがとうございます。 それですみませんが下の部分が分りませんでした。 While IE.busy: Wend While IE.Document.readyState <> "complete": Wend この命令の内容を理解するための説明があるサイトを教えていただけるとありがたいです。
お礼
皆様ありがとうございます。 自分でも少しきちんと考えてみます。 これからもまたわからなかったら質問させてください。