前提・実現したいこと
WinActorで「スクリプト実行」アクティビティを使用してIE上のテキストを取得したいです。
繰り返し処理の中で検索を行うためブラウザのURLやタイトルは毎回変わってしまうのですが、
HTML内で同じ位置にあるテキストの取得を試みています。
「指定のieが見つかりませんでした」というエラーが解決できません。
コードは、下記出所のリンクに公開されているものを参考にさせていただいております。
https://qiita.com/yizm/items/2bdb67ae0591920d1e14
エラーを解決しようと、以下のような変更を加えましたが解消することができません。
※コードが長いため、変更箇所のみ記載します
元コード「■ vbsで指定タイトル・URLの起動中IEのオブジェクトを取得」の部分を
→以下「■特定の文字列を含む起動中IEオブジェクトを取得する」のコードに変更
該当のソースコード
'(省略) '■特定の文字列を含む起動中IEオブジェクトを取得する Function getObjIE(KeywordTitleOrUrl) Dim KeyWord, ie, RE, Match, Matches Dim strTest 'As String Set ie = Nothing Set RE = CreateObject("VBScript.RegExp") On Error Resume Next For Each obj In CreateObject("Shell.Application").Windows strTest = Range(obj.LocationURL).Value KeywordTitleOrUrl = Range("https://transit.yahoo.co.jp/search/").Value With RE .Pattern = KeywordTitleOrUrl .IgnoreCase = True .Global = True End With Set Matches = RE.Execute(strTest) If TypeName(obj.Document) = "HTMLDocument" Then For Each Match In Matches If RE.Test(Match.Value) Then Set ie = obj End If Next End If Next On Error GoTo 0 Set RE = Nothing If ie Is Nothing Then MsgBox "指定のieが見つかりませんでした。" Else Set getObjIE = ie End If End Function '(省略)
初心者ですので、どんなに些細な事でもご指摘いただけますと嬉しいです。
お力添えの程何卒宜しくお願い致します。
VBScript「ステートメントがありません」エラーを解決したい
https://teratail.com/questions/292521
むこうは解決済みにして立て直したのはなぜ?
あとRangeってなにしてるの?
Yahooの路線情報から取得したいの?
https://transit.yahoo.co.jp/search/
インラインで失礼致します。
>むこうは解決済みにして立て直したのはなぜ?
→むこうでは質問の目的をコンパイルエラーの解決にしており、その問題は解決された(コンパイルエラーは出なくなった)ので、こちらの根本的な問題は別の質問で行う方が良いかと考えました。
はじめての投稿で不慣れな部分が多く、質問の仕方等で改善点ございましたらご指摘いただけますと嬉しいです。
>あとRangeってなにしてるの?Yahooの路線情報から取得したいの?
→はい。
■掲載したコードで実現したいこと
異なるルート検索を行うことで変化するURLに対して、不変の箇所("https://transit.yahoo.co.jp/search/")とMatchするか判断させ、一致するなら毎度のウインドウを指定(Set ie = obj)し認識させたいです。
strTest = Range(obj.LocationURL).Value ←調査されるURL(現在開いているブラウザ)
KeywordTitleOrUrl = Range("https://transit.yahoo.co.jp/search/").Value ←調査するURL(一致してほしい不変箇所)
■省略コードも含め全体で実現したいこと
Yahooの路線情報から、特定の位置のテキスト(最安値の金額)を取得したい
【処理の全体像は以下です】
■繰り返し処理
①Yahoo乗換案内を開いてルート検索
②最安値の金額テキスト取得---------------------------ここの処理をVBScriptで実行したい
立て直しの件了解しました
あとRange関数自体VBScriptにないはずなんだけれども
名称順VBScript関数一覧
https://www.kanaya440.com/contents/script/vbs/function/index_abc.html
それでここで書かれていないRange処理を別に用意しているのかな?
と思ったわけです。
もしない場合
On Error Resume Next
だからstrTestにもKeywordTitleOrUrlも空の状態で処理が進むよ?
そうするとMatchesもないからIE取得できないよね?
ご返信が遅くなり失礼いたしました。
>Range関数自体VBScriptにない
→確認不足により、VBAのサンプルコードを参考にアレンジしておりました。お恥ずかしい限りです。
(http://www.eurus.dti.ne.jp/yoneyama/Excel/vba/vba_regexp.html)
そのためRange処理を別で用意しておりませんでした。
ご指摘いただいた通り、これではIEが取得されないですね。。。
お送りいただいたVBScript関数一覧を参考にさせていただき、処理を再考します。ありがとうございます。
あなたの回答
tips
プレビュー