読者です 読者をやめる 読者になる 読者になる

三流君 ken3のmemo置き場

メモ置き場、保管庫として利用。まとまっていませんがヨロシク



XXXXさんへ 起動済みIE、操作済み、既存の表示済みWEB画面を操作したい

下記の質問が来ました。

>すいません、質問なのですが、既存のWEB画面を操作したいです。

こんにちは。
質問書き込みありがとうございます。

表示済み、起動済み、操作済み,
既存のWEB画面を操作
ですね?

手前みそですが、
http://www.ken3.org/vba/backno/vba156.html
↑を参考に

Sub aaa()

    'オブジェクトを格納する変数
    Dim objShell As Object, objWindow As Object

    'シェルのオブジェクトを作成する
    Set objShell = CreateObject("Shell.Application")
    
    'ウインドウの数だけまわすぞ
    For Each objWindow In objShell.Windows
        'TypeNameでオブジェクト変数のタイプを表示する
        MsgBox "タイプは:" & TypeName(objWindow.document)
        Debug.Print "タイプは:" & TypeName(objWindow.document)
        'HTMLDocumentだったら
        If TypeName(objWindow.document) = "HTMLDocument" Then
            'URLとタイトルを表示する
            MsgBox "IEみつけたよ" & objWindow.document.Title
            Debug.Print "タイトル:" & objWindow.document.Title
            Debug.Print "URL:" & objWindow.document.URL
        End If
    Next
    Set objShell = Nothing

End Sub

この、
objWindow.document.Title

objWindow.document.URL
で、
該当するIEが区別可能なら、
捕まえて、(ループを抜けたりして、そのまま使う)
データセットやボタンを押す処理に入るのがいいのかなぁ?

まずは、
上記サンプルを走らせて、
.Titleで区別可能か?探ってみてください。

実例

操作中のコメント入力画面(Web上 http://www.ken3.org/cgi-bin/test/test029-1.asp )に対して、
Excel から OK,NGの固定文字、フリー入力(INPUTBOX)した文字をセットして、
登録ボタンを押すサンプル

試行錯誤の解説動画 → http://www.youtube.com/watch?v=po2IeQtSwaw

↑※いつものように、解説がループしていますが、下記の箇条書きとソースコード 合せてみてください。

箇条書きの解説

Shell.Application で 管理されている
.Windows を For Each で 1つ1つ取り出し、
TypeNameでタイプを探る。

タイプが If TypeName(objWindow.document) = "HTMLDocument" なら、
次に
URLを探す
If objWindow.document.URL = "http://www.ken3.org/cgi-bin/test/test029-1.asp"
URLが一致したら、変数objIEに保存する ( Set objIE = objWindow '代入する )

目的のIEが↑で見つかったかを
If objIE Is Nothing Then
でチェックして、見つからない時は Exit Sub

見つかったら、項目(Name="MEMO")にデータをセットする
objIE.document.all("MEMO").Value = strMSG

セット後、登録ボタンを押す
objIE.document.all("bWRITE").Click

こんな感じの流れです。

テストで使用した ソースコード

下記、テストで使用したソースコードです。
イロイロとアレンジして使ってみてください
(※自分のもの(知識として吸収)してください)

Option Explicit

Sub bbb(strMSG As String)

    'オブジェクトを格納する変数
    Dim objShell As Object, objWindow As Object

    Dim objIE As Object  '捕まえたIE
    
    Set objIE = Nothing  '初期化

    'シェルのオブジェクトを作成する
    Set objShell = CreateObject("Shell.Application")
    
    'ウインドウの数だけまわすぞ
    For Each objWindow In objShell.Windows
        'TypeNameでオブジェクト変数のタイプを表示する
        Debug.Print "タイプは:" & TypeName(objWindow.document)
        'HTMLDocumentだったら
        If TypeName(objWindow.document) = "HTMLDocument" Then
            'URLとタイトルを表示する
            Debug.Print "タイトル:" & objWindow.document.Title
            Debug.Print "URL:" & objWindow.document.URL
            If objWindow.document.URL = "http://www.ken3.org/cgi-bin/test/test029-1.asp" Then  '指定したURLか?
                Set objIE = objWindow   '代入する
                Exit For  '見つけたのでループを抜ける
            End If
        End If
    Next
    Set objShell = Nothing

    'URLが見つかったか判断
    If objIE Is Nothing Then
        'メッセージ表示、終了
        MsgBox "登録するIEのページがみつかりません"
        Exit Sub
    End If

    'データをセットする
    objIE.document.all("MEMO").Value = strMSG
    
    '登録ボタンを押す
    objIE.document.all("bWRITE").Click '書き込みボタンをクリック
    
End Sub

Sub ccc()  'OK 固定入力

    Call bbb("OK 了解しました")
    
End Sub

Sub ddd()  'NG固定入力

    Call bbb("NG 再提出してください")
    
End Sub

Sub eee() 'フリー入力

    Dim strWORK As String
    strWORK = InputBox("何かいれて", "input", "テスト ")
    
    Call bbb(strWORK)
    
End Sub

終わりのあいさつ

捉え方はイロイロとあるとは思いますが、
何かの参考となれば 幸いです・・・ 三流プログラマー Ken3

PS.手前味噌解説の

回答下書き 試作 Excel A列の値(本タイトル)をWebブラウザーにセットする
http://d.hatena.ne.jp/ken3memo/20091102/1257102258
の中の
http://www.youtube.com/watch?v=nmP-34m3u_8

も、よろしくお願いします