- ベストアンサー
VBAでHTMLファイルを扱うにはどうしたらいいですか?
VBAでHTMLファイルを扱うのにはどうしたらいいのですか? open では、うまくいかないようで、どうしたらいいか困っています。 HTMLファイル内の文字列を検索し、見つかった文字列の後ろの何文字かを検出したいのですが、よい方法がありましたら教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#3補>うまくいきません。 うまくいかないのがどううまくいかないのか書いてないので不明だけど、多分、文字コードが違うためにVBA からうまく読み込めないんじゃないかと思います。 例えば、この質問のページで回答欄の数字を取り出すVBA としては、こんな感じ ---------------------------------------------------------------- Public Sub getANo() Dim IE As Object Dim HTML As String Dim pos Set IE = CreateObject("InternetExplorer.Application") 'IEを使う IE.Navigate ("http://okwave.jp/kotaeru.php3?qid=1934551") '指定したページの読み込み While IE.busy: Wend While IE.Document.readyState <> "complete": Wend '読込完了 HTML = IE.Document.body.innerText '内容を文字列で取り出す IE.Quit pos = InStr(HTML, "ANo.") '"ANo."を検索する Range("A1").Value = Val(Mid(HTML, pos + Len("ANo."), 3))'ANo. の後の数字を取り出す'3'は、適当なサイズ End Sub
その他の回答 (3)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
#1補> ごめんなさい、 もう少し詳しくあなたのやりたいことを教えていただけませんか? そのHTMLファイルは、自分のPCにあるのか、WEB上のモノなのか? ファイル内の文字列は、どんなモノを想定しているのか? 例えば、<b>ここ</b>その後の文字 のようにタグを含めて検索する必要があるのか? あるいは、タグを含めないで、ブラウザ上に表示される「ここ」を検索(必要なのはその後の文字)するのか? IEは、使える環境にありますか? open でうまくいかなかったのはどのようにやってみたのか?
- imogasi
- ベストアンサー率27% (4737/17069)
>扱うのにはどうしたらいいのですか 「扱う」といっているのは (1)IEで開くようなこと (2)テキストとしてテキストの中煮を何かしたい メモ帳で開いて見ている状態に対し何かしたい。 どうも(2)らしい。 VBで Sub test03() Open "C:\Documents and Settings\xxxx\My Documents\test7.html" For Input As #1 While Not EOF(1) Line Input #1, a MsgBox a Wend Close #1 End Sub 上記のMsgboxのところで、Instr関数を使って、検索し、MID関数で抜き出しすればよいのでは。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
>open では、うまくいかない 多分文字コードが違うとか、ネットワーク上にあるとかですかね。 参考URLのようにしたら、IEを使ってHTMLファイルを取り込むことができます IE.Document.documentElement.outerHTML が、取り込んだHTMLファイルの文字列になります。 参考URLのプログラムは、VBScriptなので WScript.CreateObject("InternetExplorer.Application") になっていますが、 VBAの場合、 CreateObject("InternetExplorer.Application") でよいです。
補足
ごめんなさい。 もう少し詳しく教えてくださいませんか? 使えるのは EXCEL,WORD,ACCESS VBA
補足
早速ありがとうございます。 HTMLファイルはWEB上です。 文字列ですが、探したいものは日本語と数字です。 ただ、検索条件はタグを指定する必要があるかもしれません。 たとえば、自分でオークションに出した品物の値段を監視し、LOGを取っていくようなものを作りたい。 >あるいは、タグを含めないで、ブラウザ上に表示される「ここ」を検索(必要なのはその後の文字)するのか? ごめんなさい。よくわかりません。 IE、MS-ACCESSがインストールされています。 回答いただいたので、例とうりにやったつもりなんですが。うまくいきません。 よろしくお願いします。 Sub test03() Open "C:\Documents and Settings\xxxx\My Documents\test7.html" For Input As #1 While Not EOF(1) Line Input #1, a MsgBox a Wend Close #1 End Sub