2

私はExcel VBAマクロを持っています

  1. IEを開き、
  2. メディケアのウェブサイトに移動し、
  3. ログインして、
  4. Web サイトにリストされている主張と、既にワークブックにある主張を比較します
  5. 違いがあれば警告する

私が問題を抱えているのはログイン手順の間なので、以下のコードのその部分を再現しました。行が実行されるとすぐに.clickポップアップ ウィンドウが表示され、OK続行するにはボタンをクリックするようユーザーに求めます。OK ポップアップのボタンを手動でクリックするまで、マクロの実行は中断されます。

http://www.mymedicare.gov Web ページの背後にあるソース コードには、ポップアップに関連する情報が含まれていますが、ポップアップOKボタンをプログラムでクリックできるように、それを使用する方法を理解できませんでした。 .

ポップアップのOKボタンをプログラムでクリックする方法を理解するという点で、どんな助けでも大歓迎です。

注: この質問では、任意のユーザー ID とパスワードを使用できます。ポップアップを処理すると、間違ったユーザー ID/パスワードなどのページに移動します。

これは、ポップアップの処理に成功したことを示します。

Sub Medicare_Claims()' 
' Update the status bar 
  Application.StatusBar = "Running the Medicare Claims subroutine" 

' Open the "MyMedicare web page 
    Set ie = CreateObject("InternetExplorer.Application") 
    With ie 
        .Visible = True 
        .Navigate "https://www.mymedicare.gov/" 
    End With 

' Loop until the page is fully loaded 
    Do Until ie.ReadyState = 4 And Not ie.Busy 
        DoEvents 
    Loop 
    
' Log-in 
    ie.Document.all.Item("ctl00_ContentPlaceHolder1_ctl00_HomePage_SWEUserName").Value = "abcde"           
    ie.Document.all.Item("ctl00_ContentPlaceHolder1_ctl00_HomePage_SWEPassword").Value = "12345"     
    ie.Document.getElementById("ctl00_ContentPlaceHolder1_ctl00_HomePage_SignIn").Click
     
' Loop until the page is fully loaded 
    Do Until ie.ReadyState = 4 And Not ie.Busy 
        DoEvents 
    Loop 

    Application.Wait (Now + TimeValue("0:00:15")) 

' Navigate further to the Search Claims" web page 
    ie.Navigate "https://www.mymedicare.gov/searchclaims.aspx" 
4

2 に答える 2

1

Application.SendKeys "{ENTER}", Trueログインコードの後に​​試してください。

また、 ロードするページが必要なときはいつでもと を追加Do: DoEvents: Loop Until Not objIE.Busyして みてください。Do While objIE.readyState <> 4: DoEvents: Loop私の経験では、この 2 つを組み合わせると非常にうまく機能しますが、どちらか一方だけを使用するとエラーが発生する場合があり、使用するとApplication.Waitコードが不必要に遅くなる可能性があります。

于 2013-07-22T01:09:13.757 に答える
1

誰かが再びこの道を通った場合に備えて、Tim Williams が提供する解決策を次に示します。

'Log-in 

ie.Document.all.Item"ctl00_ContentPlaceHolder1_ctl00_HomePage_SWEUserName").Value= "abcde"

ie.Document.all.Item("ctl00_ContentPlaceHolder1_ctl00_HomePage_SWEPassword").Value = "12345"

Dim f As String

f = "function(SignIn){document.getElementById'ctl00_ContentPlaceHolder1_ctl00_HomePage_Agree').value = 'True';}"

ie.Document.parentWindow.execScript "window.ConfirmationPopup = " & f, "jscript"

ie.Document.getElementById("ctl00_ContentPlaceHolder1_ctl00_HomePage_SignIn").Click
于 2013-11-28T18:55:46.903 に答える