Excel VBAで以下のようなフレーム構造を持つHTMLページを操作したいと考えています。
(実際はもっと複雑なページですが、簡略化して記載しています)
<HTML>
<HEAD>
<TITLE>ようこそ ○○さん</TITLE>
</HEAD>
<FRAMESET id=frameset1 border=0 name=TotalFrame frameSpacing=0 rows=48,*,0,0 frameBorder=0>
<FRAME name=header src="./Header/Header.aspx" noResize scrolling=no>
<FRAMESET id=frameset2 border=0 frameSpacing=0 frameBorder=0 cols=144,*>
<FRAMESET id=menuFrame border=0 name=menuFrame frameSpacing=0 rows=22,*,0 frameBorder=0>
<FRAME id=option6 name=option6 src="">
<FRAME name=Contents src="./Menu/MenuFrame.aspx" noResize scrolling=no>
<FRAME name=sub2 src="" height="0">
</FRAMESET>
<FRAMESET border=0 name=mainFrame frameSpacing=0 rows=*,0>
<FRAME name=main src="" scrolling=no>
<FRAME name=sub src="" height="0">
</FRAMESET>
</FRAMESET>
<FRAME name=message src="" height="0">
<FRAME name=footer src="" height="0">
</FRAMESET></HTML>
このWebページは、メニューフレームに「番号検索」「高度な書誌検索」などの各種メニューボタンがあり、これらメニューボタンをクリックすると、各メニューに対応した検索画面がメインフレームに表示されるというページ構成になっています。
このWebページを開いた時点(デフォルト)では、メインフレームは「高度な書誌検索」画面になっています。
そこで、
(1)メニューフレームの「番号検索」ボタンをクリックしてメインフレームを「番号検索」画面に変更し、続いて、
(2)メインフレームに表示された「番号検索」画面のテキストボックスに値を入力したいと考えています。
(1)メニューフレームの「番号検索」ボタンをクリックし、メインフレームを「番号検索」画面に変更する操作は以下のプロシージャで上手くいきました。
Dim IE As InternetExplorer, htdoc As HTMLDocument, htdoc_frame As HTMLDocument, htdoc_frame_frame As HTMLDocument, anchor As HTMLAnchorElement
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible
IE.Navigate "http://www.○○○・・・(省略)・・・"
Do While IE.Busy Or IE.ReadyState <> 4
DoEvents
Loop
Set htdoc = IE.Document
Set htdoc_frame = htdoc.frames("Contents").Document
Set htdoc_frame_frame = htdoc_frame.frames("header").Document
For Each anchor In htdoc_frame_frame.getElementsByTagName("DIV")
If anchor.ID = "G04" Then 'G04は「番号検索」ボタンに相当するID
anchor.Click
Exit For
End If
Next
しかし、続く、(2)メインフレームに表示された番号検索画面のテキストボックスに値を入力する操作が、以下のプロシージャでは上手く行きません。
Set htdoc = IE.Document
Set htdoc_frame = htdoc.frames("main").Document
Set htdoc_frame_frame = htdoc_frame.frames("main").Document
Dim txtAreaOutput As HTMLInputElement
Set txtAreaOutput = htdoc_frame_frame.getElementsByName("TextBox1")(0)
txtAreaOutput.Value = "VBAからの書き込み"
上記プロシージャを実行してもエラーは発生しないのですが、テキストボックスに"VBAからの書き込み"という値が入力されません。
自分でいろいろ調べてみたところ、どうも、(1)の操作で、見た目はメインフレームが「番号照会」画面に変化しているものの、内部的に?はメインフレームが「高度な書誌検索」画面のままであるのが原因のようです。
内部的にも、メインフレームを「高度な書誌検索」画面から「番号検索」画面に変化させるにはどうすれば良いのでしょうか?
非常に判り難い質問かと思いますが、何か判る方がいらっしゃいましたら、教えて頂けると幸いです。
No.1ベストアンサー
- 回答日時:
簡略化でも断片的でも実際に確認出来ない以上、何とも言いようがないかと。
取り合えず、マウスカーソル直下の要素を取得して、一番上の親のdocumentから列挙して比較するサンプル。
再帰処理のフレーム部分は環境が無かったので未確認。
(想像で書いてます)
参考URL:https://gist.github.com/kumatti1/46ccb4fda7be7b8 …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フレームの片方だけを更新(リロ...
-
外部CSSが反映されるHTMLとされ...
-
テーブルでのレイアウト~リン...
-
フレームを切っても全体スクロ...
-
文字化けを解除するには
-
インラインフレームのデメリット
-
HPで一定の場所だけ常に同じ...
-
フレームについて
-
pythonのエラーについての質問...
-
フレームで区切った時の隙間を...
-
インラインフレームの中のフレ...
-
フレーム分割しているページで...
-
スタイルシートで背景画像を固...
-
フレーム未対応のブラウザとは?
-
【至急!!助けて!】【スマホ...
-
HPの一部に他のHPを表示
-
ページにパスワードをかける方法
-
HTMLからフォルダを開きたい
-
Excelで、社外秘(閲覧のみ)と...
-
htmlの中にexcelが埋め込むには...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
pythonのエラーについての質問...
-
どのページもすべて同じURLなの...
-
フレームの片方だけを更新(リロ...
-
2つのページを重ねたい
-
スタイルシートで背景画像を固...
-
スクロールできない
-
WebサイトでHTMLのフォームに隠...
-
ページが変わっても同じ音楽を...
-
frameの内容が表示されない
-
フレームで指定している送信先...
-
html 左メニューから右への表示...
-
target="_parent"
-
WordファイルをHTMLに埋め込む方法
-
直リンクとは。
-
URLを変えないで表示する方法
-
フレームを使わずに画面分割し...
-
フレームが表示されない><
-
画面の一部だけ更新したいので...
-
フレーム内のURLを表示させる方法
-
<iframe>タグが正常に動作しない
おすすめ情報