• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAで文字の位置が正確に取得できない)

VBAで文字の位置が正確に取得できない

このQ&Aのポイント
  • Excel2003のマクロで、URLを抜き出すマクロを作っているのですが、なぜかurl_endの値が正確に取得できません。何がいけないのでしょうか?
  • url_endに格納される値がなぜか1376(くらいだったような・・)になってしまう。url_startには1260が格納されており、<a href=の部分をきちんと取得している。
  • Sub test() Dim objIE As Object Dim objTAG As Object Dim souce As String Dim url As String Dim url_start As String Dim url_end As String url_end = 1 Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = False objIE.Navigate "http://dir.yahoo.co.jp/" Do While objIE.Busy = True DoEvents Loop Application.Wait Time:=Now + TimeValue("00:00:02") url_start = InStr(url_end, objIE.Document.All(1).Innerhtml,"<a href=", vbTextCompare) url_end = InStr(url_start,objIE.Document.All(1).Innerhtml, ">", vbTextCompare) url = Mid(objIE.Document.All(1).Innerhtml, url_start, url_end) Cells(1, 1).Value = url End Sub

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

  • ベストアンサー
回答No.1

URIが100字ほどあって長いだけで、それは問題ないのでは? #HTML上は次のような構文が許されているが <p title=">">あいう</p> RFCのURIの構文自体では許されてないかな、多分。 #気になるのはInStr関数の戻り値は文字列の最初から数えた文字数で #Mid関数の第3引数は"終了位置"じゃなくて"長さ"であること。 だから第二引数に1300とか与えては駄目。 ========== ところで, Option Explicit Sub test() Dim x As Integer x = 0 If Left("123456789", 4) = 12345 Then x = x + 1 End If If "12345" = 12345 Then x = x + 2 End If MsgBox (x) End Sub で表示される値はどうなるかわかる? Mid関数とMid$関数の違いを調べると面白いかもよ?(本題には関係ないけど)

j-y-a
質問者

お礼

お~っと・・お恥ずかしい。 end-startにしたら無事取れました。 こんな初歩的なミスをやらかすとは・・。 Mid関数とMid$関数の違い ⇒バリアントかstringかの違いでしたっけ? ありがとうございました。

その他の回答 (1)

回答No.2

×第二引数 ○第三引数