スキップしてメイン コンテンツへ

 none
Access2019のVBAで、InternetExplorerでSBI証券のスクリーニング機能を利用することを考えていますが、HTMLIFrameのcontentDocumentが利用できなくて困っています。 RRS feed

  • 質問

  • Access2019のVBAで、InternetExplorerでSBI証券のスクリーニング機能を利用することを考えていますが、以前こちらのフォーラムで教えていただいたHTMLIFrameのcontentDocumentが利用できなくて困っています。

    早速ですが、サンプルプログラムを載せます。

    Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMillisecond As Long)
    Option Compare Database
    Option Explicit
    
    Const cid As String = "SBI ID"
    Const cpass As String = "SBI Password"
    
    Dim ie As New InternetExplorer
    
    
    Public Sub Test_Q2()
        ie.Visible = True
        ie.Navigate "https://www.sbisec.co.jp/ETGate/"
        SleepLong
        
        '---------- SBI Login
        ie.Document.getElementsByName("user_id").Item(0).Value = cid
        ie.Document.getElementsByName("user_password").Item(0).Value = cpass
        ie.Document.getElementsByName("ACT_login").Item(0).Click
        SleepLong
    
        '---------- Move to Screening 
        ie.Document.getElementById("search4").firstChild.Click
        SleepLong
    
        '---------- Check contentDocument
        Dim frame As HTMLIFrame, listdoc As HTMLDocument
        Set frame = ie.Document.getElementById("middleAreaMScr").all.Item(0).rows.Item(1).cells.Item(0).all.Item(0).firstChild
        Msgbox("Please check frame.contentDocument.")    
    'Set listdoc = frame.contentDocument
    
        ie.Quit
        Set ie = Nothing
    End Sub
    
    
    
    Public Sub SleepLong(Optional adwMs As Long = 2000)
        Sleep adwMs
        Do While ie.Busy Or ie.ReadyState < READYSTATE_COMPLETE
            DoEvents
        Loop
        Do While ie.Document.ReadyState <> "complete"
            DoEvents
        Loop
    End Sub
    
    

    このような形でHTMLIFrameを作成し、contentDocumentを用いてHTMLDocumentを作成しようとしたのですが、うまくいきません。

    ウォッチウインドウでframeを確認すると、contentsDocumentが、<書き込みできません。>と表示されています。

    ならば、と、contentWindowのDocumentからHTMLDocumentを作成しようとしましたが、これもだめでした。

    どなたかスクリーニング画面のHTMLDocument(のようなもの)を取得する方法をご存知の方はおられませんでしょうか?

    2019年12月7日 7:47

回答

  • >Harukaさま

    おはようございます。

    回答が遅れましたことをお詫びいたします。

    実は、HTMLDocumentを作成する方法については見切りをつけまして、iMacroを使って脇道から攻める方法に切り替えました。

    この方法はうまくいき、必要なデータを得ることができるようになりました。

    僕の質問に回答を得られるよう、お骨折りをいただきましてどうもありがとうございました。

    また、僕の質問に答えるため、お骨折りをいただきました他のたくさんの皆様にも、感謝したいと思います。

    勝手ではありますが、質問を終わりにさせていただこうと思います。

    • 回答としてマーク ノラネコ 2019年12月20日 17:54
    2019年12月20日 17:54

すべての返信

  • ノラネコさん、こんにちは。フォーラムオペレーターのHarukaです。
    MSDNフォーラムにご投稿くださいましてありがとうございます。

    下記3点をご確認いただけますでしょうか。
    問題を絞り込めて、他のユーザー様よりのご意見が集まりやすくなります。

    1.この行が適切な要素を返すかどうかを確認ください。 
    そうでない場合は、これがこの問題を引き起こす可能性があります。
    ie.Document.getElementById("middleAreaMScr").all.Item(0).rows.Item(1).cells.Item(0).all.Item(0).firstChild

    2.「contentWindowのDocumentからHTMLDocumentを作成しようとしましたが、これもだめでした。」と書いてありますが、
    そのコードをご共有いただけますでしょうか。

    3.他のエラーがありますでしょうか。

    どうぞよろしくお願いいたします。

    MSDN/ TechNet Community Support Haruka
    ~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、 ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~

    2019年12月13日 7:49
    モデレータ
  • >Harukaさま

    おはようございます。

    回答が遅れましたことをお詫びいたします。

    実は、HTMLDocumentを作成する方法については見切りをつけまして、iMacroを使って脇道から攻める方法に切り替えました。

    この方法はうまくいき、必要なデータを得ることができるようになりました。

    僕の質問に回答を得られるよう、お骨折りをいただきましてどうもありがとうございました。

    また、僕の質問に答えるため、お骨折りをいただきました他のたくさんの皆様にも、感謝したいと思います。

    勝手ではありますが、質問を終わりにさせていただこうと思います。

    • 回答としてマーク ノラネコ 2019年12月20日 17:54
    2019年12月20日 17:54