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$関数の違いを調べると面白いかもよ?(本題には関係ないけど)
お~っと・・お恥ずかしい。
end-startにしたら無事取れました。
こんな初歩的なミスをやらかすとは・・。
Mid関数とMid$関数の違い
⇒バリアントかstringかの違いでしたっけ?
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) EXCEL VBAで NHK NEWSの NEWSデータ内容取得が できない 1 2023/04/09 12:26
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) 貼り付けた値が消えていく 以下はソースファイルの2番目のシートのB6から最終行を取得 ターゲットファ 2 2023/07/27 12:23
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ArrayListの要素数の上限
-
Stringクラスの変数の格納アド...
-
ダブルクォーテーションを含む...
-
DateTimePickerに値を入れたい...
-
matchesを否定文として使う方法...
-
PSQLExceptionが発生する
-
暗号化文字列を英数字のみにしたい
-
hiddenの値を消したくない!
-
このプログラミング誰か教えて...
-
BCD形式で時刻を!
-
wsprintf関数の使い方について
-
特定の文字列を複数抜き出した...
-
Javaの問題なのですが、「3文字...
-
このプログラミング誰か教えて...
-
char型での演算子
-
excel vba 時間計算と条件分岐...
-
DOSバッチで変数の値を変数名に...
-
VB.NET+Javascriptで、VB.NETで...
-
Evaluate()に文字列の形式の数...
-
【struts】<logic:iterate>で出...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ダブルクォーテーションを含む...
-
ArrayListの要素数の上限
-
特定の文字列を複数抜き出した...
-
javaのCSVデータ読込についてです
-
wsprintf関数の使い方について
-
BCD形式で時刻を!
-
結合した文字列をファイル名に...
-
Evaluate()に文字列の形式の数...
-
C言語の変数(LSB)の合わせ込...
-
実行シェルからCOBOLへパラメー...
-
hiddenの値を消したくない!
-
VB6,論理演算子Orの使い方がわ...
-
DateTimePickerに値を入れたい...
-
char型での演算子
-
String str = "a\\\\b\\\\c";
-
Javaの問題なのですが、「3文字...
-
8桁整数を限りなく短い文字列に...
-
matchesを否定文として使う方法...
-
DOSバッチで変数の値を変数名に...
-
excel vba 時間計算と条件分岐...
おすすめ情報