No.2ベストアンサー
- 回答日時:
#ご質問の文章が少し欠けているようですが。
。。「Excel から "InternetExplorer.Application" によってWEBページを操作する場合に、SendKeys と ExecWB とではどのような違いがあるのか?」というご質問と解釈してお答えいたします。
それぞれのザクッとした意味は #1 さんがお書きのようなことかと存じます。
しかし、実際に [SendKeys ステートメント] を使ってみると、意図しないタイミングでキーストロークが送られることがままあります。
しかも、IEオブジェクトを扱っているときには、
While .Busy Or .ReadyState <> 4: DoEvents: Wend
などで、ブラウザの準備が整うまで待ってから操作を行なうことが殆どですが、このタイミングで [SendKeys ステートメント] によって、ブラウザを操作することは、至難の業かと存じます(100%の確率で達成できる保証がありません)。
したがって、意図する操作を完遂するためには、もともとブラウザを操作するように設計されている [ExecWB メソッド] を使った方がよいのではないか、というような考え方になったのではないかと思われます。
[ExecWB メソッド] の概要は、
●IWebBrowser2::ExecWB Method
http://msdn.microsoft.com/ja-jp/library/aa752117 …
に記載されていますが、[ExecWB メソッド] の引数である「OLECMDID cmdID」について掲載されている
●OLECMDID enumeration
http://msdn.microsoft.com/en-us/library/ms691264 …
のページを参照しても、実際の使い方がよく解らず、WEB検索しても [ExecWB メソッド] の使用例は殆ど掲載されていません。
IEオブジェクトの操作に関するご質問で、よく参照先に示される「三流君」さんのページ
●IE 操作 .ExecWB でコマンド実行(検索したかったけど)
http://www.ken3.org/vba/backno/vba112.html
でも、[ExecWB メソッド] の [OLECMDID_FIND] で、ブラウザの検索機能を扱うことができずに、結局、
>SendKeysで逃げた
と書かれています。
IEオブジェクトを扱って、エクセルVBAからブラウザを操作する、という手法につきましては、対象のWEBページの作りに大いに左右されますので、実際には、ケースバイケースで、逐一コードを組み立てていかなければならないことが殆どかと存じますが、「SendKeysとExecWBの違い」は、ザクッと申せば「コード作成者側の期待度と、期待する操作の完遂度の違い」ではないかと存じます。
私が、言いたかったけど知識が足りなくてうまく表現できなかったことを
DOUGLAS_様は言ってくれました!
[ExecWB メソッド]の使い方は謎な部分が多いようですね。
私も3流君のページよく見ます!勉強になりますよね。
ありがとうございました。大変参考になりました。
No.1
- 回答日時:
こんにちは。
>SendKeysとExecWBは同じようなものと思って正解ですか?
まったく違う所のものを比較して、同じようなものかとは、質問の意図が分かりません。
質問する前に、最低限のことは調べてください。
>・SendKeysはwindowsに対してキーを送る
windows? 単に、キーストロークを送信しているだけでしょう?
ただ、その送信側のオブジェクトが、ExcelやWordなどのApplicationなのか、VBScript とかなのか、というだけで、受信側は、オープンされている側がいくつかあるというわけです。受信側は、それが、何かを特定はできません。
>・ExecWBはエクセルを操作する際にキーを送る
Excelとは無縁の存在です。
http://d.hatena.ne.jp/ken3memo/20090708/1247023283
(下半分)
ExecWBは、IEやWebBrowser のコマンドを実行するためのメソッドです。
私は何か勘違いをしていたようですね。
比較できるものだと思っていました。
ExecWBはエクセルに対して操作するものだと思ってました。
だって頭文字が似てるから・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) vba sendKeysを送る相手のソフトを前面に開くには 1 2023/07/20 16:42
- Visual Basic(VBA) Selenium Basicの件 5 2023/04/10 20:55
- Visual Basic(VBA) VBAでPDFのアクティブページ番号取得 1 2023/05/25 12:41
- Excel(エクセル) MacのExcelでoptionキーを押したまま図形や画像を移動させると、複製されてしまう 2 2022/06/14 16:19
- Windows 10 BitLocker 回復キーの入力 1 2022/10/09 15:23
- マウス・キーボード 不良表示キー(キーボード) 3 2022/04/27 10:53
- マウス・キーボード ノートパソコンのテンキーについてです。 4 2022/03/26 11:56
- その他(IT・Webサービス) Google日本語入力の操作方法 一度確定した後の訂正方法 1 2023/06/17 16:03
- Word(ワード) Word 2016のマクロを Word 2021のWordでキー動作させたい 3 2023/04/12 16:14
- Windows 10 BitLocker回復キーを知りたいのですが、手順を教えて下さい。 2 2023/03/16 14:21
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
サーブレットコンテキストの意...
-
Objectクラスのオブジェクトを...
-
VB.NETでのnothing の意義について
-
JTableで値を右寄せ表示する方法
-
JSPでのArrayListの表示につい...
-
エクセルVBA 画像を貼り付ける...
-
[ASP.NET]DropDownListのDB連携...
-
servletからjspへオブジェクト...
-
vectorの内容をString型に変換...
-
ピクチャーボックスに点を打つ...
-
VB.netでメソッドからコントロ...
-
GridViewに行追加するには?
-
VBAでの[]
-
オブジェクトの参照渡しについて
-
getParameter()について
-
UTF-8のテキストファイルを開く...
-
String型からlong型への変換は...
-
MIME::Parserのparse_dataメソ...
-
VBA Workbooks.open
-
Excel VBA 定数にオブジェクト...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでの[]
-
エクセルVBA 画像を貼り付ける...
-
サーブレットコンテキストの意...
-
C#のクラスで値渡しをする
-
Vba ListViewの行挿入に関して...
-
Excel VBA 定数にオブジェクト...
-
VB.netでメソッドからコントロ...
-
servletからjspへオブジェクト...
-
javaで、、、
-
VB.NETでのnothing の意義について
-
Dispose()は、どんな時に使うの...
-
ピクチャーボックスに点を打つ...
-
VBスクリプトでテキストファイ...
-
String型からlong型への変換は...
-
JSPでのArrayListの表示につい...
-
C#で親にイベントを投げる方法
-
MessageBox.Show(Me,…の「Me」...
-
エクセルVBA/SpecialCellsで特...
-
getParameter()について
-
VBS でのソート処理Excel2003
おすすめ情報