みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルVBAでwebのソースコードを検索&取得

webページのソースコードを検索して、検索した文字列に続く3文字を取得したいです

webページのソースコードが下記だと仮定します
(ソースコード)
  AAA
  ABC***
  BBB
  CCCAAA

ABC という文字列を検索して、***という変数を取得したいです
***の部分は毎回変わる、英数字のランダムな文字です

説明が下手で申し訳ありません

どの様に取得すればよいかわかりません
どうぞよろしくお願い申し上げます

投稿日時 - 2015-01-18 23:42:47

QNo.8896276

困ってます

質問者が選んだベストアンサー

回答No.1 です。

色々と仕様が不明ですが、以下の前提で組んでみました。
・Webページのアクセスには InternetExplorer.Application
 を使用している
・取得したい文字列は BODY 要素内に存在する
・取得したい文字列は、検索文字列 "ABC" から行末(改行)
 までである。
--------------------------------------------------------
' IE の準備
Dim objIE As Object
Set objIE = CreateObject("InternetExplorer.Application")

' Webページのアクセス処理は紙面の都合で省略

' Webページへのアクセスが完了したら、BODY 要素内のソースを取得する
Dim sourceBody As String
sourceBody = objIE.Document.body.OuterHtml

' 取得したソースを改行で区切って配列にする
Dim lines() As String
' 改行コードを LF に揃える
sourceBody = Replace(sourceBody, vbCrLf, vbLf)
sourceBody = Replace(sourceBody, vbCr, vbLf)
' 改行コード LF で区切って配列にする
sourceLines = Split(sourceBody, vbLf)

' 検索する文字列(ABC)を含む行を検索
Dim lineNo As Integer
Dim position As Integer
For lineNo = 0 To UBound(sourceLines)
 ' 検索文字列 ABC を探す
 position = InStr(sourceLines(lineNo), "ABC")
 If position > 0 Then
  ' 検索文字列の後ろの文字列を取得して、メッセージボックスに表示
  MsgBox (Mid$(sourceLines(lineNo), position + Len("ABC")))
 End If
Next

投稿日時 - 2015-01-19 23:49:01

お礼

ありがとうございました
思い通りの結果を得ることができました
プログラムの意味がまだ理解できてませんが、ひとつひとつ理解していきたいと思います

投稿日時 - 2015-01-20 10:12:26

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(2)

質問内容はどちらでしょうか。

 A. Webページのソースは取得できているが、ABC を検索
   して *** の部分を取得する方法が判らない
 B. VBA で Webページにアクセスするところから全く分か
   らない。

B である場合は、『Webページにアクセスするところ』までは
Google で 「EXCEL VBA Internet Explorer」あたりを検索
条件にして自分で調べてください。サンプルコードがたくさん
見つかります。

投稿日時 - 2015-01-19 00:08:41

補足

説明不足で申し訳ありません
webページのソースの取得まではネットで調べて出来ました
A.*** の部分を取得する方法がわかりません

投稿日時 - 2015-01-19 10:26:18

あなたにオススメの質問