「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で質問しましょう!
似たような質問が見つかりました
- JavaScript [Java] Edgeでのアドレスバー非表示について 3 2022/04/20 17:51
- C言語・C++・C# 【C++】IDirect3DSurfaceのディープコピーは可能ですか? 1 2022/07/06 02:47
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- gooブログ ブログの記事を書きだしのみに表示したい 1 2022/06/25 19:11
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- アプリ Edgeを操作するアプリについて 4 2023/05/11 22:48
- 画像編集・動画編集・音楽編集 動画をディスク作成すると画像が乱れる。 4 2022/06/24 07:49
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- Visual Basic(VBA) Edge操作のアプリが例外発生に 1 2023/03/12 21:22
このQ&Aを見た人はこんなQ&Aも見ています
-
「環境が人を育てる」って本当?環境によって人格や生き方は本当に変わるのか
環境が人生に与える影響は実際どれほどのものなのか、専門家の田宮由美さんに伺った。
-
vbaでIEの名前を付けて保存(A)をしたい
Microsoft ASP
-
VBAのIE操作でframe構造のサイト画面をscrollする方法
Visual Basic(VBA)
-
VBAでIEを操作、ポップアップされた画面の処理(Enter)を行いたい
Visual Basic(VBA)
-
-
4
iframeのソースを取得したい
JavaScript
-
5
Webページ中の javascript をVBAから実行するには
Visual Basic(VBA)
-
6
VBAを使ってHTMLソースから特定の文字列を抽出したいと思っています
Visual Basic(VBA)
-
7
ie操作 フレームのURLがあってるか取得したい
Visual Basic(VBA)
-
8
VBA IE ダウンロード ダイアログ制御(名前を付けて保存)
Visual Basic(VBA)
-
9
ExcelVBAで今開いているユーザ情報を取得できますか?
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
frameをはみ出した領域を表示さ...
-
嫌だなと思うHPって?
-
ワンクリックで二つのフレーム...
-
どのページもすべて同じURLなの...
-
フレームの片方だけを更新(リロ...
-
frameのボーダーを0にするとif...
-
フレーム内部に表示するページ...
-
フレームで、一回しか切り替わ...
-
スタイルシートでリンクターゲ...
-
タグの打ち方
-
フレームタグ"target"のような...
-
HTMLタグ(JAVAスクリプト?)に...
-
インラインフレーム
-
ソースが短い理由
-
HTMLでフレームのトップの中で...
-
ポップアップメニューが隠れて...
-
HP内のカテゴリからブログに飛...
-
フレームページから他のURLに飛...
-
CSSを使ってサイトの更新をうま...
-
HTMLでのフレーム作りでうまく...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
pythonのエラーについての質問...
-
どのページもすべて同じURLなの...
-
フレームの片方だけを更新(リロ...
-
2つのページを重ねたい
-
スタイルシートで背景画像を固...
-
スクロールできない
-
WebサイトでHTMLのフォームに隠...
-
ページが変わっても同じ音楽を...
-
frameの内容が表示されない
-
フレームで指定している送信先...
-
html 左メニューから右への表示...
-
target="_parent"
-
WordファイルをHTMLに埋め込む方法
-
直リンクとは。
-
URLを変えないで表示する方法
-
フレームを使わずに画面分割し...
-
フレームが表示されない><
-
画面の一部だけ更新したいので...
-
フレーム内のURLを表示させる方法
-
<iframe>タグが正常に動作しない
おすすめ情報
またこれはコントロールのボタンから実行しているのですが
VBAの画面の実行ボタン(▶)から実行すると
「オートメーションエラーです。
実行時エラー-2147352319」
とでます。
何が問題なのかわかりますでしょうか?
できました!
Dim doc As HTMLDocument
Set doc = ie.document
として、
doc.frames("Menu").document.all("ImageButton").Click
としたらできました。
ie.document.framesという風にフレームを取ってこようとしたのが
行けなかったようです。
回答していただいた方には大変感謝しております。