一部の VBA コードに非常に奇妙な問題があります。コードは InternetExplorer 自動化であり、非常に単純です。ページをロードし、資格情報を入力し、別のページのボタンをクリックするだけです (ログインに成功した後)。
しかし...私のコードは機能していません(ただし、AWS上の私のマシンの1つだけです)。私のローカル マシンでは、このコードは正常に動作します。
奇妙なことに、最初に読み込まれたページ (ログイン/パスワードを入力する必要がある場所) の Document プロパティにしかアクセスできないようです。つまり、MyBrowser.Document
プロパティから、INPUT
開始ページをロードするとすべてのフィールドが表示されます。しかし、ログインに成功すると (IE ウィンドウが表示されます) 、プロパティから同じ INPUT
フィールドが表示されMyBrowser.Document
ます! また、(私が言ったように)別のマッシングでこのコードに問題はありません。
IE 保護モードが無効になっています (これは IE 11 です)。これはある種のセキュリティ上の問題だと思いますが、自分で見つけることができません...
これが私のコードです:
'MyBrowser is IE instanse
'Here I'm loading start page and input login/password
'Next the browser show me another page where I need to click a button
'But Debug messages show me input fields for the first Form!
Application.Wait (Now + TimeValue("0:00:05"))
Do
DoEvents
Loop Until MyBrowser.ReadyState = READYSTATE_COMPLETE
Set HTMLDoc = MyBrowser.Document
For Each myHTML_Element In HTMLDoc.getElementsByTagName("INPUT")
If myHTML_Element.Type = "submit" And myHTML_Element.Name = "BUTTONNEWJOBS" Then myHTML_Element.Click: Exit For
Debug.Print myHTML_Element.Name
Next
更新
理由はわかりませんが、私のブラウザー オブジェクトは常にBusy
、古いページの HTML を取得する理由です。私はそれを試みまし.Stop
たが、運がありませんでした。