![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
郵便局のクリックポストを大量に出力するプログラムを作っています。
その中で決済画面に移行する際に、何秒か待つプログラムにしていましたが、
より安定的にするためにURLに任意の文字が出現するまでIEを監視するものに作っていますが
「loopに対応するDOがありません」となります。
どこを改善したらいいでしょうか?
Function targeturl(urlmozi As String) As InternetExplorer
Dim colsh As Object
Dim ie As InternetExplorer
Dim strTemp As String
Dim objIE As Object
Dim flag As Integer
'初期化
strTemp = ""
'フラッグを初期化
flag = 0
Do While flag = 1
'flagが0なら、IEの分析を繰り返す
Sleep 1
'今あるIEをすべて取得します。
Set colsh = CreateObject("shell.application")
'一つずつ分解
For Each ie In colsh.Windows
'分解したieのURLを取得する
strTemp = ie.document.Location
If InStr(strTemp, urlmozi) > 0 Then
flag = 1
Set targeturl = ie
End If
Exit For
’10ミリ秒待って再チャレンジ
Sleep 10
Loop
End Function
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
ご質問のコードをざっと見ると
Sleep 1 もう少し長く取りましょう
Sleep 10 これでも短いですね。それで、取りこぼすことはないと思います。
それと一緒に、DoEvents も加えておいたほうが無難ですね。
flag = 1 は見つけたという意味ですね。
flag =0 で、Do While flag = 1 なら、Loop は、通らないはずです。
For Each ie In colsh.Windows 'ここは、objIE にするのでは? IE はわかるけれども、Shell のWindows から取れるものは、生のIE ではないはずです。
別にエラーが出ないなら、こちらが言う筋合いではないと言われそうですが。
それに、終わりがありませんね。For Each ~ Next です。
IE 側は、事前バインディングしているのに、Shell 側はしないのでしょうか。
Set colsh = CreateObject("shell.application")
それと、
strTemp = ie.document.Location
Document にLocation プロパティはあったのでしょうか。
あまり、人様のコードをいじりまわすと、また、怒られてしまいますが、私の解釈です。ただ、見つからないと、無限ループになる恐れがありそうな気がします。もうひとつ、どこかで安全弁を作ったほうがよいと思います。
Function targeturl(urlmozi As String) As InternetExplorer
Dim colsh As Object
Dim ie As InternetExplorer '←この部分は浮いています。
Dim strTemp As String
Dim objIE As Object
Dim flag As Integer
strTemp = ""
'フラッグを初期化
flag = 0
Do
'flagが0なら、IEの分析を繰り返す
Sleep 10
'今あるIEをすべて取得します。
Set colsh = CreateObject("Shell.Application")
'一つずつ分解
For Each objIE In colsh.Windows
'分解したieのURLを取得する
strTemp = objIE.LocationURL
If InStr(strTemp, urlmozi) > 0 Then
flag = 1
Set targeturl = objIE
Exit For
End If
'10ミリ秒待って再チャレンジ
Sleep 10
DoEvents
Next
Loop Until flag = 1
End Function
そこで、私なりに、コードを考えてみました。ふつう、画面が変わっているなら、IE のイベントを取るのが普通です。
VBA内部のMsgBox ですと、あまり華々しくメッセージが出ませんでしたが、拾っていることは間違いないです。
このURLの番号を探すプログラムです。
http://oshiete.goo.ne.jp/qa/9396135.html
要:Microsoft Internet Controls
'ThisWorkbook モジュール
Private WithEvents objIE As InternetExplorer
Sub StartIE()
myURL = "https://oshiete.goo.ne.jp/”
Set objIE = Nothing
Set objIE = New InternetExplorer
objIE.Navigate myURL
objIE.Visible = True
End Sub
Private Sub objIE_NavigateComplete2(ByVal pDisp As Object, URL As Variant)
Dim FindTxt As String
FindTxt = "9396135"
If InStr(1, pDisp.LocationName, FindTxt, 1) > 0 Then
Application.EnableEvents = False
Call Call GetIEObject(objIE)
End If
End Sub
'標準モジュール
Sub GetIEObject(obj As InternetExplorer)
MsgBox obj.LocationURL
End Sub
もしも、勘違いしていましたら、ご寛容のほどを。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) ExcelVBAでDo Until loopのネスト、IF文を使って一致する物と一致しない物としたい 11 2022/12/24 17:46
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) excel VBA if文について 3 2022/03/27 17:42
- Visual Basic(VBA) 貼り付けた値が消えていく 以下はソースファイルの2番目のシートのB6から最終行を取得 ターゲットファ 2 2023/07/27 12:23
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ウィンドウをマクロで操作
-
Webサイトのurlの保存方法?
-
EdgeでInPrivate上Webページの...
-
IEの表示を定期的に自動更新...
-
パソコン版グーグルマップを最...
-
サイトのショートカットアイコ...
-
パソコンと体質的に相性が悪い...
-
特定のURLのみを特定のブラウザ...
-
サイトのショートカットアイコ...
-
指定されたパスは存在しません...
-
元ファイルでショートカットさ...
-
エクセル固まった時 その作業...
-
フォルダのショートカットをバ...
-
VMWare Player 上でフリーズ抜...
-
QuickTime のキーボードショー...
-
ブラウザが強制終了
-
グーグルクロームよりIEが遅...
-
ファンが急に回転してフリーズ...
-
Photoshop初心者です。PCが重い...
-
Yahoo!!のメモ帳機能について・...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
getElementsByClassName不可
-
ブール代数を用いた、論理式の...
-
VBA→IEでtextareaにセル範囲の値
-
GIFの背景透明化・・・
-
エクセルでマクロを使い、多数...
-
URLのアドレスで検索する方法あ...
-
エクセルをインターネットエク...
-
Webサイトのurlの保存方法?
-
パソコン版グーグルマップを最...
-
VMWare Player 上でフリーズ抜...
-
サイトのショートカットアイコ...
-
EdgeでInPrivate上Webページの...
-
エクセルでマクロ使うとフリー...
-
Photoshop初心者です。PCが重い...
-
QuickTime のキーボードショー...
-
フォルダのショートカットをバ...
-
サイトのショートカットアイコ...
-
エクセル固まった時 その作業...
-
Microsoft Edge で InPrivateを...
-
Internet Exploerについて
おすすめ情報