
「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ランキング
-
どのページもすべて同じURLなの...
-
ウィンドウを小さくしてもフレ...
-
HTMLのIFRAMEの代替について
-
pythonのエラーについての質問...
-
HTMLのソースの表示について
-
ページが変わっても同じ音楽を...
-
フレーム内固有の場所へのリンク
-
インラインフレームで予めスク...
-
IEをのアップグレードで、C...
-
ホームページビルダーのフレー...
-
HTMLからフォルダを開きたい
-
iPadの標準ブラウザでローカルH...
-
テキストエディタ grepの機能...
-
Excelで、社外秘(閲覧のみ)と...
-
HTMLページが勝手にダウンロー...
-
VBA URLDownloadToFileについて
-
HTMLで別PCのフォルダを開く
-
htmlファイルの表示が真っ白
-
【HTML】1クリックで複数ファイ...
-
htmlの謎
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
どのページもすべて同じURLなの...
-
pythonのエラーについての質問...
-
フレームの中にFLASHを。...
-
html 左メニューから右への表示...
-
フレームについて。
-
ワンクリックで2つのフレーム...
-
フレームとCSSの違い
-
URLを変えないで表示する方法
-
フレームの事で質問です。
-
カーソルをのせただけでのリンク
-
フレームページで同じページが...
-
別ページのデータを表示させたい。
-
上下フレーム分割ページでプル...
-
同一フォルダ内の別ページの特...
-
ページが変わっても同じ音楽を...
-
【初心者】CSSリンクについて
-
フレームの片方だけを更新(リロ...
-
スクロールできない
-
ウィンドウを小さくしてもフレ...
-
ホームページのアドレスを
おすすめ情報
またこれはコントロールのボタンから実行しているのですが
VBAの画面の実行ボタン(▶)から実行すると
「オートメーションエラーです。
実行時エラー-2147352319」
とでます。
何が問題なのかわかりますでしょうか?
できました!
Dim doc As HTMLDocument
Set doc = ie.document
として、
doc.frames("Menu").document.all("ImageButton").Click
としたらできました。
ie.document.framesという風にフレームを取ってこようとしたのが
行けなかったようです。
回答していただいた方には大変感謝しております。