IEの金額だけを抽出するには
未読分:4件
昨日以降(0) 2日前以降(0) 3日前以降(0) 4日前以降(0) 5日前以降(0)
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。
Message#4 2014年9月12日(金)08時15分 From: 管理人 | 返事 削除 変更 |
文字列から数字だけを抽出するサブルーチンを作成しました。 以下が解説ページですので、ご確認ください。 http://www.vba-ie.net/collection/numextract.html |
Message#3 2014年9月11日(木)08時16分 From: akb52 | 返事 削除 変更 |
ありがとうございます! 今回は【案1】を利用させていただきました。 InStr、Midを知らなかったのでお恥ずかしい限りですが、 1つ知識が増えてよかったです。 こちらは他にも色々な方法でも利用できますね! ありがとうございました^^ |
Message#2 2014年9月9日(火)07時35分 From: 管理人 | 返事 削除 変更 |
前後のHTMLソースがわからないので、いくつか案をださせていただくと以下になります。 【案1】 ※「現在の価格」がpタグないでここでしか使われていない場合 Sub sample() 'IEのオブジェクトを作成する Set objIE = CreateObject("InternetExplorer.Application") 'IEを表示する objIE.Visible = True '指定したURLのページを表示する objIE.Navigate "サイトURL" '完全にページが表示されるまで待機する Do While objIE.Busy = True Or objIE.ReadyState <> 4 DoEvents Loop Do Until objIE.document.ReadyState = "complete" DoEvents Loop r=1 For Each objTag In objIE.document.getElementsByTagName("p") With objTag If InStr(.outerHTML, "現在の価格") > 0 Then intEn = InStr(.innerHTML, "円") cells(r,1) = Mid(.innerHTML, 7, Len(.innerHTML) - intEn - 1) r = r + 1 End If End With Next End Sub 【解説】 まず、対象のURLを開きます。 次にgetElementsByTagNameメソッドでpタグのデータをループ処理されます。 pタグ内に「現在の価格」の文言があったら次の処理へ移ります。 intEnはpタグ内の「円」の文言がどの位置にあるのかを抽出しています。 そしてMid関数を利用して価格を抽出する最初の位置と最後の位置を指定して価格だけ抽出させています。 【参考ページ】 getElementsByTagNameでタグの値取得:http://www.vba-ie.net/element/subroutine-value.html 【案1】 ※数字が利用されているpタグがここしかない場合 Sub sample2() 'IEのオブジェクトを作成する Set objIE = CreateObject("InternetExplorer.Application") 'IEを表示する objIE.Visible = True '指定したURLのページを表示する objIE.Navigate "サイトURL" '完全にページが表示されるまで待機する Do While objIE.Busy = True Or objIE.ReadyState <> 4 DoEvents Loop Do Until objIE.document.ReadyState = "complete" DoEvents Loop r=1 For Each objTag In objIE.document.getElementsByTagName("p") With objTag For i = 1 To Len(.innerHTML) myN = "" myStr = Mid(.innerHTML, i, 1) If myStr Like "[0-9]" Then myN = myN & myStr End If If IsNumeric(myN) Then cells(r,1) = myN r = r + 1 End If Next i End With Next End Sub 【解説】 まず、対象のURLを開きます。 次にgetElementsByTagNameメソッドでpタグのデータをループ処理されます。 Mid関数で一文字ずつ抽出してmyStr Like "[0-9]"で数字かどうかチェックしています。 文字列をチェックしたら、最後にIsNumeric関数でmyNが数値として認識できるかチェックし価格だけ抽出します。 |
Message#1 2014年9月8日(月)14時57分 From: akb52 | 返事 削除 変更 |
あるサイトの金額だけをVBAで抽出しようと思っています。 <p>現在の価格は○○円です</p> という形なのですが、idもclassも設定されておらず、どのようにしたらいいか悩んでいます。 理想は○○の部分だけを抽出するのが一番いいですが、<p>タグ内の文字だけの抽出だけでも大丈夫なので方法を教えていただけないでしょうか? そこまで詳しい方ではないので、解説を交えてくれると大変ありがたいです。 よろしくお願いします! |
昨日以降 2日前以降 3日前以降 4日前以降 5日前以降