三流君 ken3のmemo置き場

三流プログラマーのメモ書きです。主にVBAやWindowsの話題が多いです

挨拶・自己紹介:
失敗続きのAB型の変わり者 :三流プログラマー Ken3です
フリーのエンジニア・個人事業主です・・と書くと聞こえはイイが(それとなくカッコよく聞こえるが)、 現在は小さな案件の受注請負 と 短期派遣 で 日々つつましく?ほそぼそと暮らしてます。

よく検索されるキーワード: [質問回答XXXXさんへ] [CreateObject] [VBA] [JRA競馬オッズ]

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
www.youtube.com
↑※いつものように、解説がループしていますが、下記の箇条書きとソースコード 合せてみてください。

箇条書きの解説

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
www.youtube.com

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

Ken3 ホームページ 目次

分類:HPを大きく分けると4つの柱(分類)です。

  1. [VBA・マクロ プログラミング]の解説
    当店の人気はVBA系のCreateObject("XXXXXX.application")で他のアプリケーションを操作するサンプルが人気です
  2. [プログラマーの愚痴]では、あまり見せたくない三流プログラマーの内面かな。
    三流君を踏み台にする
  3. [古いクラシック ASP(Active Server Pages)]の解説。
  4. [元コンビニ店長時代の話]が弟に巻き込まれ、失敗した脱サラ、畑違い?の仕事で失敗。
主に上記4つの分類でHP作成やメルマガの発行を行ってます。
※更新頻度が落ちていて情報の鮮度が悪いです。



本当に三流なんです(笑):たまにスゴイですねなんて言われることもありますが、
真実は→ [三流君の真実は...] ←を初めに見てくださるとわかると思います。
(からくりは、成功例↑しか載せてなくて ヒドイ失敗例はお蔵入り迷宮入りが多かったりします)