アプリ版:「スタンプのみでお礼する」機能のリリースについて

「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画面でフレーム内の要素を表示させる(取ってくる)のは
どうすればできますか?

質問者からの補足コメント

  • またこれはコントロールのボタンから実行しているのですが
    VBAの画面の実行ボタン(▶)から実行すると
    「オートメーションエラーです。
     実行時エラー-2147352319」
    とでます。
    何が問題なのかわかりますでしょうか?

    No.1の回答に寄せられた補足コメントです。 補足日時:2021/02/07 18:48
  • できました!

    Dim doc As HTMLDocument
    Set doc = ie.document
    として、
    doc.frames("Menu").document.all("ImageButton").Click
    としたらできました。

    ie.document.framesという風にフレームを取ってこようとしたのが
    行けなかったようです。
    回答していただいた方には大変感謝しております。

      補足日時:2021/02/07 19:08

A 回答 (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

ご参考までに。
この回答への補足あり
    • good
    • 0
この回答へのお礼

ありがとうございます。
たびたびすみませんが、うまくいかないので質問させてください。

おっしゃって頂いたように
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は定義されていません。

お礼日時:2021/02/07 18:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています