
「HTML・CSS」のカテゴリーでも同じ質問をさせてもらったのですが
こちらに質問する方が合ってそうなのでこちらにも書かせて頂きます。
申し訳ありません。
したいことは、1画面が2つのフレームで分かれておりフレームの中にはリンクの指定だけ
の場合、フレームのリンク先の要素を取ってくるにはどうすればいいかを知りたいです。
リンクの指定だけといってもその指定された先のリンクやボタンが画面に表示されているので
そのボタンをクリックしたいのですが、ソースはあくまでリンクだけなので操作ができません。
具体的には現在エクセルVBAでIEを操作できるプログラムを作っています。
そのサイトはホーム画面(Home.html)でフレームを使用しており、
上のフレームではメニュー画面を表示、
<frame name="Menu" src="Menu.html">
下のフレームではサブメニュー画面およびサブメニューに応じた内容が表示されます。
<frame name="SubMenu" src="SubMenu.html">
これら2つをHome.htmlで呼び出すことでメニューとサブメニューを表示し、
メニューを選ぶとサブメニューが変わり、サブメニューを選ぶとサブメニューのフレーム
内の表示が目的に合ったものに変更されます。
このような仕組みになっている為、エクセルVBA側としては
ログインしてHome.htmlに行った際に
フレームの中のMenu.htmlの中にある要素(Idやname)が取ってこれません(見えません)。
ソースを表示してもフレームやリンクの指定しかなく、フレーム内の要素は表示されません。
Menu.htmlに遷移すると取ってきたいIdが取れるのですが
それではMenu画面だけになってしまい、サブメニュー画面が見えなくなってしまいます。
Home.html画面でフレーム内の要素を表示させる(取ってくる)のは
どうすればできますか?
No.1ベストアンサー
- 回答日時:
こんにちは
今どき、frameを使っているサイトなんて残っているのですか?
(既にWeb標準からは削除されているので、メンテされていないサイトなのかな?)
https://developer.mozilla.org/ja/docs/Web/HTML/E …
使わないので忘れてしまいましたが、確か、IEの場合は、
frame要素.document
または
frame要素.contentWindow.document
で、そのframeのdocumentを取得できたように記憶しています。
(他のブラウザの場合は、contentDocumentプロパティだったかと)
https://www.vba-ie.net/frame/input.php
ご参考までに。
ありがとうございます。
たびたびすみませんが、うまくいかないので質問させてください。
おっしゃって頂いたように
ie.document.frames("Menu").document.all("ImageButton").Click
という風にMenuというnameのフレームのリンク先にある
ImageButtonというIdのボタンをクリックしようとしたのですが
framesメソッドは失敗しました:JScriptTypeInfo
と実行時エラーがでました。
"Menu"の部分を0として1つ目のフレームとしてもうまくいきません。
そもそもie.document.framesの部分からうまくいきません。
(.documentを書く前からうまくいきません)
ieは
Dim ie As New SHDocVw.InternetExplorer
として定義しているのですが、何がいけないのでしょうか?
ちなみに1つ目のフレーム(Menu.html)にはnameは定義されていますが
Idは定義されていません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
WebサイトでHTMLのフォームに隠...
-
フレームの片方だけを更新(リロ...
-
どのページもすべて同じURLなの...
-
フレームを使わずに画面分割し...
-
Excelで、社外秘(閲覧のみ)と...
-
input type="file"のmaxlength...
-
VBAで#Regionに変わるものは無...
-
Webサイトから、txtファイルを...
-
iPadの標準ブラウザでローカルH...
-
エクセルで作成した表のハイパ...
-
見れる方・・
-
staticな関数をテストする方法...
-
HTMLがSHIFT-JISにならない
-
HTMLからフォルダを開きたい
-
リソースビューが表示されない(...
-
HTMLページが勝手にダウンロー...
-
form action="#"
-
医療画像(Windows用)をMacで...
-
C言語のソースを書く際使いや...
-
aspxとうい拡張子がASP.netだと...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
どのページもすべて同じURLなの...
-
pythonのエラーについての質問...
-
WebサイトでHTMLのフォームに隠...
-
HPのフレームの付け方
-
フレームの片方だけを更新(リロ...
-
WordファイルをHTMLに埋め込む方法
-
CSSで複数ページに、同じ文字列...
-
HPの一部に他のHPを表示
-
フレームの代わり、どうしたら...
-
フレームを使ったページの全体...
-
HTML フレーム内にWebページを...
-
ソースが短い理由
-
フレームなしのページからフレ...
-
Excel VBAによるIEの制御に関して
-
左フレームからのリンクを右フ...
-
フレームを使ったときに横スク...
-
target="_parent"
-
フレーム内のPHPへPOSTで情報を...
-
ブラウザで4分割表示できますか?
-
フレーム(?)の表示について
おすすめ情報
またこれはコントロールのボタンから実行しているのですが
VBAの画面の実行ボタン(▶)から実行すると
「オートメーションエラーです。
実行時エラー-2147352319」
とでます。
何が問題なのかわかりますでしょうか?
できました!
Dim doc As HTMLDocument
Set doc = ie.document
として、
doc.frames("Menu").document.all("ImageButton").Click
としたらできました。
ie.document.framesという風にフレームを取ってこようとしたのが
行けなかったようです。
回答していただいた方には大変感謝しております。