質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

1回答

4691閲覧

VBAからIEを起動せずに接続先操作

Zoohomi

総合スコア26

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2017/07/14 20:19

今回やりたいことは、VBAにてIEを起動せずに
①接続先へアクセス
②確認ダイアログに対して「はい」を選択
③はいを選択した後に飛ばされるページのHTMLを出力
です。

http://excel-ubara.com/excelvba5/EXCELVBA222.html
上記サイトで説明している、MSHTML.HTMLDocumentを使用して、以下の処理を記述しました。

VBA

1 Dim objHTML As MSHTML.HTMLDocument 2 3 Dim objXML As New MSHTML.HTMLDocument 4 Dim htmlDoc As New MSHTML.HTMLDocument 5 Dim objITEM As Object 6 7 Set htmlDoc = objXML.createDocumentFromUrl("http://example.com?hoge=hoge", _ 8 vbNullString) 9 ' 待機処理 10 Call untilReady(htmlDoc) 11 ' 「はい」をクリック 12 htmlDoc.getElementsByClassName("id_result_yes")(0).Click 13 ' 待機処理 14 Call untilReady(htmlDoc) 15 ' 出力 16 debug.print htmlDoc.getElementsByTagName("html")(0).outerHTML 17 18 Set objITEM = Nothing 19 Set htmlDoc = Nothing 20 Set objXML = Nothing

しかし、上記のコードでは、出力されるHTMLは確認ダイアログが表示されている状態のページのHTMLでした。
IEを起動させずに、ページを操作して移動していくようなことは出来ないのでしょうか?

ご教授の程、宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/07/14 21:50

Q.1 IEを起動しないで、とは「CreateObject("InternetExplorer.Application")」もなしで、ということでしょうか? Q.2 確認ダイアログは、HTMLのボタンではなくJAVASCRIPTか何かのポップアップ確認ウィンドウでしょうか?(例のURLがないようでしたら、代わりにポップアップ部分のソースは出した方が良いと思います。)
guest

回答1

0

MSHTML.HTMLDocumentは単純にHTTPプロトコルのGETリクエストによりリモートリソース(HTMLドキュメント)を読み込んでDOMを作るだけのものかと思います。

これを使う場合、JavascriptがDOMの変更を行わないようなページならanchorやformの内容を解析することにより「ユーザーがこう操作したらこのページへ遷移するはず」ということが解析できると思います。汎用的なものを作るのは面倒でしょうが、アクセスするページのDOM構成(HTMLの構造)が分かっているならそう難しくはないでしょう。

しかしながらJavascriptがDOMの変更操作をするようなページですと、変化後のDOMの内容を知るのはJavascriptを実際に動作させてDOMの変化を観察するしかないと思います。そのようなことはMSHTML.HTMLDocumentのみでは無理だと思います。

Javascriptによる動的なHTMLページの動きに自動的に追従するならブラウザーエンジンを遠隔操作する方式(IEのCOM操作もその一種かと思います)が必要になってくるのではないでしょうか?

投稿2017/07/15 10:03

KSwordOfHaste

総合スコア18392

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問