前回
XXXXさんへ VBA IE操作で オブジェクト変数または With ブロック変数が設定されていません について - 三流君 ken3のmemo置き場
http://d.hatena.ne.jp/ken3memo/20111209/1323433071
の続き
>1番と2番をためしましたがダメでした。
>
>ie.document.all("selBrand")(0).selectedIndex = 1
>
>やはりここで
>
>実行時エラー 91
>オブジェクト変数またはWith ブロック変数が設定されていません。
>
>となります。
>
>3 フレームになっていると思います。
>ページは二つの領域に分かれていて、境界線をドラッグして、二つの領域の大きさを
>変えられます。
>フレームの場合どうすればよいのでしょうか?
まず、フレームのソースを確認する
現物を見ていないので、なんとも言えませんが、
フレームなら
ブラウザで フレームと中身のソースを確認する - YouTube
www.youtube.com
みたいな感じで、フレームのソースを確認します。
<frameset COLS="160,*" FRAMEBORDER=1 BORDER=1 FRAMESPACING=0> <frame SRC="http://www.ken3.org/vba/menu-vba.html" NAME="F_MENU"> <frame SRC="http://www.ken3.org/cgi-bin/test/test068.html" NAME="F_RIGHT"> </frameset>
↑ここの、NAME="xxxx"を調べる※フレームの名前を押さえておく。
手前味噌の解説ページを紹介
次に、見るのが 手前味噌解説ページの
三流君VBAでIE操作 フレーム操作 Document.Frames
http://www.ken3.org/cgi-bin/group/vba_ie_frame.asp
かなぁ。
ポイントは、
参照設定
三流君VBAでIE操作 まずは、参照設定から
http://www.ken3.org/cgi-bin/group/vba_ie_object.asp
してから、
Dim objFRAME As FramesCollection Set objFRAME = objIE.Document.frames 'フレームの代入 Debug.Print "フレームの数は" & objFRAME.Length 'ドキュメントオブジェクトの代入 Dim objDOC As HTMLDocument 'HTMLドキュメント Set objDOC = objFRAME("F_RIGHT").Document 'フレームのドキュメントをセット '↑objFRAME(0).DocumentやobjFRAME(1).Documentもアリです 'Set objDOC = objFRAME(1).Document 'フレーム(1)をセットでも動きます '項目名を指定して、データをセットする objDOC.all("userid").Value = "Ken3" 'ユーザー名 objDOC.all("pass").Value = "aaa" 'パスワード
-
-
- -
-
みたいにして、
Dim objFRAME As FramesCollection
Set objFRAME = objIE.Document.frames 'フレームの代入
↑フレームを代入(いらないかも、今思えば直接 Set objDOC = objIE.Document.frames("F_RIGHT").Documentでいいのかも)
Dim objDOC As HTMLDocument 'HTMLドキュメント
Set objDOC = objFRAME("F_RIGHT").Document 'フレームのドキュメントをセット
↑一度フレームを取り出す。↑ここで、フレームの名前が必要
すると、フレームの先にアクセスできるので、
いままで、 objIE. や ie. でアクセスしたところを
objDOC.all("selBrand").selectedIndex = 1
や
objDOC.all("selBrand")(0).selectedIndex = 1
で
深く探って アクセスする感じかなぁ。
終わりのあいさつ
イヤなのが、自動化防止で、ダミーのフレームを作っていたり、
名前が毎回違うフレームにされていると
(証券会社の FXのページで苦労したかなぁ)
先物ページ相手も かなり 大変だと思いますが、
1つ1つ フレームやページ、オブジェクトを探ってみてください。
解決の糸口となれば幸いです。 三流プログラマー Ken3
PS.少し違うけど
少し、アプローチが違いますが、
QA20110523 VBA IE操作、フレームの操作をデバック - 三流君 ken3のmemo置き場
http://d.hatena.ne.jp/ken3memo/20110524/1306190154
↑も時間のある時に合わせて見てください。