• ベストアンサー

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

webページのソースコードを検索して、検索した文字列に続く3文字を取得したいです webページのソースコードが下記だと仮定します (ソースコード)   AAA   ABC***   BBB   CCCAAA ABC という文字列を検索して、***という変数を取得したいです ***の部分は毎回変わる、英数字のランダムな文字です 説明が下手で申し訳ありません どの様に取得すればよいかわかりません どうぞよろしくお願い申し上げます

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

  • ベストアンサー
noname#212058
noname#212058
回答No.2

回答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

mono444
質問者

お礼

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

その他の回答 (1)

noname#212058
noname#212058
回答No.1

質問内容はどちらでしょうか。  A. Webページのソースは取得できているが、ABC を検索    して *** の部分を取得する方法が判らない  B. VBA で Webページにアクセスするところから全く分か    らない。 B である場合は、『Webページにアクセスするところ』までは Google で 「EXCEL VBA Internet Explorer」あたりを検索 条件にして自分で調べてください。サンプルコードがたくさん 見つかります。

mono444
質問者

補足

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

関連するQ&A

  • UWSCで、htmlソース取得

    htmソース内の、 ある文字列 "ABC"以降を 取得するには、 どのようなコードを書けば よろしいでしょうか?

  • javascriptでソースコードを取得

    今javascriptをやっています。 javascriptで指定したサイトのソースコードが読み込めないものかを試しているのですけど、やりかたが全然わかりません。 普通のWEBページで右クリックをして「ソースの表示」って出るじゃないですか、その内容をそのまま取得できれば良いのです。 とりあえず「Yahoo!JAPAN」のトップページのソースコードを取得できれば良いのです。 ・ソースコードの取得がjavascriptで出来るのか出来ないのか。 ・出来るならどのようなプログラムを書けばよいのか。 ・出来ないのならば他に出来るプログラミング言語は何か。 と言う質問に分かる部分だけ答えてくださればありがたいです。 よろしくお願いします。

  • VBAのInstrについて

    webページのソースコードを変数に代入し、 その中から<td class="abc">という文字列の位置を取得したいので hogehoge = Instr(baf,"<td class="abc">")と指定すると""の部分でエラーになってしまいますので ""をutf-8にあらかじめ変換し、%22で囲ってみました hogehoge = Instr(baf,"<td class=%22abc%22>") これでエラーはでませんが、これではソースコードから該当の文字列が探せません。 Instrで指定の文字の位置を取得したいが、その文字列内に「"」が含まれている場合、 どのようにすれば正常に取得できるでしょうか? よろしくお願いします。

  • エクセル:セルの検索

    Sheet1のC~G列を検索し、 [AAA]が見つかれば「成功」、見つからなければ「失敗」と表示するコードを作りました。 (実際のコードでは、AAAが見つかったセルBBBの.Addressや.Valueを使いたいので「Set BBB」などという書き方をしています)   Dim AAA As String Dim BBB As Range Set BBB = Worksheets("Sheet1").Range("C:G").CurrentRegion.Find(What:=AAA, LookAt:=xlWhole) If BBB Is Nothing Then MsgBox "検索に失敗" Else MsgBox "検索に成功" End If このコードで、C~D列にAAAがある場合は見つかるのですが、 E~G列にAAAがある場合は見つからず「検索に失敗」とメッセージが出ます。 また、 別のシートでも全く同じコードを使っているのですが、こちらは正常に動作します。 上に挙げたコードと違うところは検索範囲がE~I列だというだけです。 上記コードでとあるシートにおいてのみE~G列にある値が検索に引っかからない理由として、 どのようなことが考えられるでしょうか。 保護はかかっていません。 値が微妙に違うということもありません。 大文字小文字、半角全角の指定はしておりませんが、 C列で検索に引っかかった値をそのままG列に移動しただけで見つからなくなります。 なお、AAAに入れているデータは、 Private Sub Worksheet_Change(ByVal Target As Range) End Sub のTarget.Addressで、「$A$20」のような形で入っています。 Sheet1のC~G列に用意している値も「$A$20」のような形で直接書き込んでいます。

  • VBAで別のファイルから情報を取得

    A列に6ケタコードが入力されています。 このコードを元に、別のファイルから情報を取得したいのですが AAAだったらBook1から、 ABCだったらBook2からというように コードの上3ケタによって読みに行くファイルを指定したいのですが、 どのような構文になりますか? ご存知の方、ご教授お願い致します。 ---例--- AAA001 Book1の、同じコードのA~Z列までを取得 ABC005 Book2の、同じコードのA~Z列までを取得

  • HTMLのソースの取得・正規表現

    プログラム自体始めて間もない初心者です。 javascriptでHTMLのソースを取得して、正規表現でマッチしたURLを書き出したいと思います。 取得したソースから正規表現で抽出はできましたが、さらに手を加えると機能しませんでした。 下記test-1では「http://abc.com/」と表示されましたので思った通りに動きました。 しかし、test-2では「http」と表示されると思っていたところ、表示されませんでした。 この違いはなんでしょうか? //////////////////// test-1 <html> <head> <script type="text/javascript"> function test(){ aaa = document.getElementsByTagName("html")[0].innerHTML; bbb = aaa.match(/http:\/\/abc\.com\//); document.write(bbb); } </script> </head> <body> <input type="button" onclick="test()"> <a href="http://abc.com/"> </body> </html> //////////////////// test-2 function test(){ aaa = document.getElementsByTagName("html")[0].innerHTML; bbb = aaa.match(/http:\/\/abc\.com\//); ccc = bbb.match(/http/); document.write(ccc); }

  • VBA:セルの空白を検索

    A列を上から検索して(とりあえず100行まで)最初の空白セルのアドレスを取得したいです。 Dim CellAd As Range Set CellAd = Range("A1:A100").CurrentRegion.Find(What:="ABC") If CellAd Is Nothing Then Exit Sub Else MsgBox CellAd.Address End If 以上のコードで、A列にABCがあればそのアドレスを$A$15のような形で表示できました。 検索したいのは空白なのですが、どのように指定すればよいでしょうか。 What:=""やNullではダメだったので(自分、「Null」を勘違いしてるかもしれません)。 また、ここでは取得したアドレスをmsgboxで表示させているだけですが、 実際は取得したアドレスの行番号のみを取得して変数Add1に入れ、 以降のコードのセル範囲指定として使いたいです。 「1行目からAdd1行目までをコピーする」のように。 私のレベルでは、 ・範囲指定はRange("A1:A100")のように、「""」でくくらなければ使えない ・変数は""の中に入れたら文字列として扱われる との認識があるのですが、 このようなコードは可能でしょうか。

  • ファイル(A)を読み込んで文字列を変数に代入、変数で別ファイル(B)を検索・・・

    お世話になっております。 まず、仕様から書かせて頂きたいと思います。 【ファイルA】 商品名 数量 ------------- AAA, 3 BBB, 5 CCC, 6 AAA,5 . . . 【ファイルB】 AAA,11111 BBB,12345 CCC,99999 . . . 【ファイルC】 商品コード 数量 ------------------ 11111 8 12345 5 99999 6 (1)ファイルAを読込み、アルファベット文字列を変数に代入 (2)変数でファイルBを検索 (ファイルAの最後まで検索) (3)検索してみつかったら 数字文字列(商品コードとします)に変換 (4)商品コードと、数量の合計をファイルCに出力 fgets、strcmpなどを使って試してみたのですが、 うまく行かず、教えていただけますでしょうか?

  • ExcelのVBAで ホームページのソースコード

    vExcelのVBAで ホームページのソースコード一部分をぬきたいのですが、わかるかたおしえてください。 http://onlinestore.barneys.co.jp/html/item/001/049/item48187.html こちらのサイトのZOOMUPした時の画像のURLを取得したいのです。 A列には、URL でB列にはその画像URLを自動で取得というかんじです。 わかるかた教えていただけないでしょうか。

  • 文字列検索(grepのようなもの)のCソースコード知りませんか?

    Cソースコードを探しています。文字列検索用のコードです。UNIXのgrepみたなことができればと思います。 ご存知でしたら教えてください。お願いします。

専門家に質問してみよう