• ベストアンサー

SendKeysとExecWBの違いは?

・SendKeysはwindowsに対してキーを送る ・ExecWBはエクセルを操作する際にキーを送る の違いですか? SendKeysとExecWBは同じようなものと思って正解ですか?

質問者が選んだベストアンサー

  • ベストアンサー
  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答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(v=vs.90).aspx に記載されていますが、[ExecWB メソッド] の引数である「OLECMDID cmdID」について掲載されている ●OLECMDID enumeration http://msdn.microsoft.com/en-us/library/ms691264(v=vs.85).aspx のページを参照しても、実際の使い方がよく解らず、WEB検索しても [ExecWB メソッド] の使用例は殆ど掲載されていません。  IEオブジェクトの操作に関するご質問で、よく参照先に示される「三流君」さんのページ ●IE 操作 .ExecWB でコマンド実行(検索したかったけど) http://www.ken3.org/vba/backno/vba112.html でも、[ExecWB メソッド] の [OLECMDID_FIND] で、ブラウザの検索機能を扱うことができずに、結局、 >SendKeysで逃げた と書かれています。  IEオブジェクトを扱って、エクセルVBAからブラウザを操作する、という手法につきましては、対象のWEBページの作りに大いに左右されますので、実際には、ケースバイケースで、逐一コードを組み立てていかなければならないことが殆どかと存じますが、「SendKeysとExecWBの違い」は、ザクッと申せば「コード作成者側の期待度と、期待する操作の完遂度の違い」ではないかと存じます。

ogfrbwdv
質問者

お礼

私が、言いたかったけど知識が足りなくてうまく表現できなかったことを DOUGLAS_様は言ってくれました! [ExecWB メソッド]の使い方は謎な部分が多いようですね。 私も3流君のページよく見ます!勉強になりますよね。  ありがとうございました。大変参考になりました。

その他の回答 (1)

回答No.1

こんにちは。 >SendKeysとExecWBは同じようなものと思って正解ですか? まったく違う所のものを比較して、同じようなものかとは、質問の意図が分かりません。 質問する前に、最低限のことは調べてください。 >・SendKeysはwindowsに対してキーを送る windows? 単に、キーストロークを送信しているだけでしょう? ただ、その送信側のオブジェクトが、ExcelやWordなどのApplicationなのか、VBScript とかなのか、というだけで、受信側は、オープンされている側がいくつかあるというわけです。受信側は、それが、何かを特定はできません。 >・ExecWBはエクセルを操作する際にキーを送る Excelとは無縁の存在です。 http://d.hatena.ne.jp/ken3memo/20090708/1247023283 (下半分) ExecWBは、IEやWebBrowser のコマンドを実行するためのメソッドです。

ogfrbwdv
質問者

お礼

私は何か勘違いをしていたようですね。 比較できるものだと思っていました。 ExecWBはエクセルに対して操作するものだと思ってました。 だって頭文字が似てるから・・・

関連するQ&A

  • SendKeysを使いたい。

    SendKeysを使いたい。 XP-Excel2003です。 Microsoft Bisual Basicのヘルプに記述してある次の構文のうち、 SendKeysが実行されません。 Dim ReturnValue, I ReturnValue = Shell("CALC.EXE", 1) AppActivate ReturnValue For I = 1 To 20 SendKeys I & "{+}", True Next I SendKeys "=", True SendKeys "%{F4}", True F8キーにて、順次実行は出来るのですが、SendKeysが有効になりません。 参照設定の何かにチェックがついていないのだと思います。 その何かを、または別の方法をお教え願います。

  • Sendkeysのタイミング

    2日前に"sendkeysとfindwindow"というタイトルで質問した者です。 まだ解決できなくてまだ困っています。 内容は、  今、MSDEをアンインストールするプログラムを組んでます。  IsUn0411.exeをshell関数の引数にして、起動させると  途中いくつかメッセージが出てきます。  ユーザーには触らせたくないので、  これらのメッセージを全てFindWindowで探して、  SendKeysでキーを飛ばしました。  アンインストール自体は出来るのですが、問題は  最後の”コンピュータからプログラムの削除”という画面です。  これも同じくFindWindowで探すことはできるのですが、  最後SendKeysでキー("{ENTER}")を飛ばしても消えてくれなくて困っています(>_<)。 というもので、なぜメッセージが消えないのか原因が分かりました。 SendKeys関数で"{ENTER}"キーを送信してはいるのですが、 問題はタイミングでした。 ”コンピュータからプログラムの削除”というウィンドウがアンインストール中に すでに出ているため、"{ENTER}"キーを飛ばしてしまいメッセージが消えない・・・ということでした。 そこで、再び質問です。 アンインストールが終了して、OKボタンが有効になったときに"{ENTER}"キーを 送りたいのですが、何か良い方法はありませんか? 私が思いつくのはGetCodeExitProcssしかありません。 これだと完全にexeが終了した場合に使うものなので、 まだメッセージが残っているときは使えませんよね・・・。 では、よろしくお願いします。

  • ACCESS97 VBA のSendKeys

    以前Windows2000ProやWindowsXP Pro ACCESS97のVBAでShell関数を利用し 別のソフトを起動 その後Timerイベントで SendKeysを実行し別のソフトを操作していました。 しかし最近購入したパソコン(WindowsXP Pro)で 実行したところ別のソフトは起動しますが Sendkeysの操作が実行されません。 なぜでしょうか? 以前のパソコンと最近購入したパソコンの違いは 以前のパソコンは購入時SP1で Windows UPdateでSP2にしたこと セキュリティーソフト(Nortonを使用しています)の バージョンが異なるぐらいです。 ( もちろん起動する別のソフトは、許可にしています) Sendkeysの操作が実行されるようにする 設定を教えてください。 よろしくお願いします。

  • VBSのSendKeysでクリックができない

    音声認識アプリケーションからvbsを実行できるのですが、ここで一度だけマウスクリックしたい状況が出てきて困っています。 Dim WSHShell As Object Set WSHShell = CreateObject("Wscript.Shell") WSHShell.AppActivate "操作したいアプリケーション名" WSHShell.SendKeys "{TAB}" 'OK WSHShell.SendKeys "{ENTER}" 'OK WSHShell.SendKeys "{CLICK LEFT, 10, 10}" 'NG TABキーやENTERキーは動作するのですが、3番目のマウスクリックがExceptionといわれエラーになってしまいます。Sendkeysでマウスクリックを送信するにはどうしたらよいのでしょうか?ネットで調べたリファレンスだと上記のような書き方で良さそうなのですが・・・ 音声認識アプリケーションはドラゴンスピーチ11Jで、OSはWin 7 ProとWin 8、どちらも64ビットです。

  • SendKeys "{F2}" 後のカーソル位置

    VBAで、値が入力されているセルを編集モードにして、語尾に値を追加させようとしています。 EXCELのセルに入力されている値を編集する場合、[F2]を押して編集モードにできますが、その際カーソルは語尾にあります。 しかし、VBAのSendKeys "{F2}"で同様の操作を実行させると、カーソルは文字列の真ん中になります。 SendKeys "{RIGHT}"を追加しても、何故か左側に移るなど思い通りに機能しません。 みなさんは、SendKeys "{F2}" 後のカーソル位置は語尾になりますか?

  • ExcelマクロのSendkeysで処理途中に次のキーが送られる

    Excelのマクロから他ソフトのデータを取り入れています。 Sendkeysを使ってソフトのページを切替えたいんですが、ページが切り替わらないうちにページ表示後用のキーが立て続けに送られてしまい旨くいきません。 今やっているのは、起動済みオフラインのIEでHP上の目次からリンクのページ内容をつぎつぎシートへ写す処理です。 SendKeys "{tab}", True    でHPの次行の目次に移って SendKeys "{enter}", True  でページを開いて SendKeys "^{a}", True    全て選択 SendKeys "^{c}", True    コピー この後Excelのシートにテキストで張付ける。 で、IEに戻ってまた"{Tab}"で次行へ移って・・ ところが2番目の"{enter}"で新ページが開き終わらないうちに3,4番目のキーが送られてしまう様です。 ページが開き終わってから次のキーを送るにはどうすればいいでしょうか?

  • findwindowとsendkeys

     今、MSDEをアンインストールするプログラムを組んでます。  IsUn0411.exeをshell関数の引数にして、起動させると  途中いくつかメッセージが出てきます。  ユーザーには触らせたくないので、  これらのメッセージを全てFindWindowで探して、  SendKeysでキーを飛ばしました。  アンインストール自体は出来るのですが、問題は  最後の”コンピュータからプログラムの削除”という画面です。  これも同じくFindWindowで探すことはできるのですが、  最後SendKeysでキー("{ENTER}")を飛ばしても消えてくれなくて困っています(>_<)。  ネットで色々なページを検索して探してはいるのですが、  参考になるところが見つからなくて・・・。  すみませんが、どなたか良いやり方をご存じの方、教えてください。  よろしくお願いします。

  • エクセルの印刷ダイアログをSendkeysで操作したい。

    エクセルのマクロ処理でフォーム上のボタンから 印刷ダイアログを呼び出して、そのダイアログを Sendkeysでもって両面印刷設定にし印刷させると いう処理を行いたいのですが上手くいきません。 印刷ダイアログが表示された段階で止まり(エラーで 止まるわけではなく単に処理が止まる)、その先の Sendkeysによる命令へ進みません。 Private Sub CommandButton1_Click() Application.Dialogs(xlDialogPrint).Show SendKeys "%r", True SendKeys "%k", True SendKeys "^{tab}", True SendKeys "^{tab}", True SendKeys "^{tab}", True SendKeys "%r", True SendKeys "{enter}", True SendKeys "+{tab}", True SendKeys "+{tab}", True SendKeys "+{tab}", True SendKeys "+{tab}", True SendKeys "{enter}", True SendKeys "+{tab}", True SendKeys "+{tab}", True SendKeys "+{tab}", True SendKeys "{enter}", True End Sub よくSendKeysは環境によって誤作動などが起こるので 使わない方がいいと言われますが、一度どのように 動くのか試してみたいと思っています。 ちなみに上のコードは当方のプリンタでの設定手順となります。 SendKeysで印刷ダイアログにキーを送ることは できないのでしょうか? 宜しくお願いします。

  • sendkeysにてALT+CTRL+INSERTを同時に行いたい

    VBScripptのsendkeysにてALT+CTRL+INSERTを同時に行いたい 下記にて、行いましたが、うまくいきません SendKeys "%^{INSERT}" どなたかヒントを御願いします →3つのキーは同時にできない?

  • ACCESS+VBA SendKeysの代わり

    お世話になります。 Access2010で、Sendkeysを使わずに、F2をキー送信できませんでしょうか? 簡単ですが以下の様にしています。 --------------------------------------------------------- Private Sub テキストボックス_GotFocus() 'SendKeys "{F2}" --------------------------------------------------------- 有名な話しの様ですが、SendKeysを使うとNumLockがon/offされてしまい困っています。 何か、代替案または、元に戻す方法がございましたら、ご教示ください。 (調べて試したのですが、上手くいきませんでした。) お手数ですが、宜しくお願い致します。

専門家に質問してみよう