概要: |
リンク 分類:
[Document(文章)からデータを取得]
/ [Form入力処理]
/ [Linkリンク情報]
/ [Image画像情報]
/ [Frameフレーム処理]
サンプル:
[IEを使ったVBAのサンプル]
/ [小さなVBAでIE操作のコード]
やっと、下記、メルマガで発行した内容です。何かの参考となれば幸いです。
過去のメルマガ[IE操作系の記事一覧]もヨロシクです。
<IE 操作 .ExecWB でコマンド実行(検索したかったけど)>
どうも、三流プログラマーのKen3です。 今回は、 掲示板とメールでもらった質問を処理するために、 IEのコマンドボタンを使う.ExecWBをイタズラしたそんな話です。 結局、出来なかったんだけど、途中経過を楽しんでね。 ※事前調査でつまずく、そんな例です。/* * 1.今回のキッカケ */
掲示板に下記の質問をもらいました。 http://www.ken3.org/cgi-bin/bbs/vba/wforum.cgi ---- >タイトル:VBAからIEの検索を表示したい > >教えてください。 >環境(EXCEL2000) >EXCELからIEを立ち上げたときに「WEB ページの検索」を >常に表示させたいのですが? >ショートカットキーは、Ctrl + E ですが、 >同処理をVBAでは、どのようなコードになりますか。 >教えてください。 >宜しく、お願いします ---- IEでCtrl + Eを押した状態にする方法 と メールで、 ---- >アクセス2000の環境で、activeXにて、アクロバットリーダ >6 を挿入しました。(アクロバット直接ではなく、Ie6 >からPLUGINです) > >それで、WEBからPDFファイルを引っ張ってきていますが、 >このあと、そのPDFファイルを検索したいのです。 > >アクロバットの検索メニューからデータを入力すればOK >なのですが、これをAccessのフォームをクリックしてアク >ロバットに送り、自動的に検索したいのです。 > >アクロバットではJavaScriptがあると聞いていますが、 >VBAでなんとかいきませんか。 >何かヒントをいただければ幸いです。 ---- こっちは、検索のウインドウを自動ですね。/* * 2.事前調査、テスト */
どちらも共通しているのは、IEの機能(ボタン)なので、 そのあたりから探ってみます。 IE Command で検索すると、 http://msdn.microsoft.com/workshop/browser/webbrowser/reference/methods/execwb.asp が検索される。 object.ExecWB( _ cmdID As OLECMDID, _ cmdexecopt As OLECMDEXECOPT, _ [pvaIn As Variant,] _ [pvaOut As Variant]) Parameters cmdID Long that represents the identifier of the command to execute. For more information on command identifiers, see MSHTML Command Identifiers. cmdexecopt OLECMDEXECOPT value that specifies the command options. pvaIn Optional. A Variant used for specifying command input arguments. pvaOut Optional. A Variant used for specifying command output arguments. で、ここが使えるコマンドかぁ。 http://msdn.microsoft.com/library/en-us/com/htm/oen_a2z_22sk.asp うわ、いっぱいあるよ・・・ typedef enum { OLECMDID_OPEN = 1, OLECMDID_NEW = 2, OLECMDID_SAVE = 3, OLECMDID_SAVEAS = 4, OLECMDID_SAVECOPYAS = 5, OLECMDID_PRINT = 6, OLECMDID_PRINTPREVIEW = 7, OLECMDID_PAGESETUP = 8, OLECMDID_SPELL = 9, OLECMDID_PROPERTIES = 10, OLECMDID_CUT = 11, OLECMDID_COPY = 12, OLECMDID_PASTE = 13, OLECMDID_PASTESPECIAL = 14, OLECMDID_UNDO = 15, OLECMDID_REDO = 16, OLECMDID_SELECTALL = 17, OLECMDID_CLEARSELECTION = 18, OLECMDID_ZOOM = 19, OLECMDID_GETZOOMRANGE = 20, OLECMDID_UPDATECOMMANDS = 21, OLECMDID_REFRESH = 22, OLECMDID_STOP = 23, OLECMDID_HIDETOOLBARS = 24, OLECMDID_SETPROGRESSMAX = 25, OLECMDID_SETPROGRESSPOS = 26, OLECMDID_SETPROGRESSTEXT = 27, OLECMDID_SETTITLE = 28, OLECMDID_SETDOWNLOADSTATE = 29, OLECMDID_STOPDOWNLOAD = 30, OLECMDID_ONTOOLBARACTIVATED = 31, OLECMDID_FIND = 32, OLECMDID_DELETE = 33, OLECMDID_HTTPEQUIV = 34, OLECMDID_HTTPEQUIV_DONE = 35, OLECMDID_ENABLE_INTERACTION = 36, OLECMDID_ONUNLOAD = 37, OLECMDID_PROPERTYBAG2 = 38, OLECMDID_PREREFRESH = 39, OLECMDID_SHOWSCRIPTERROR = 40, OLECMDID_SHOWMESSAGE = 41, OLECMDID_SHOWFIND = 42, OLECMDID_SHOWPAGESETUP = 43, OLECMDID_SHOWPRINT = 44, OLECMDID_CLOSE = 45, OLECMDID_ALLOWUILESSSAVEAS = 46, OLECMDID_DONTDOWNLOADCSS = 47, OLECMDID_UPDATEPAGESTATUS = 48, OLECMDID_PRINT2 = 49, OLECMDID_PRINTPREVIEW2 = 50, OLECMDID_SETPRINTTEMPLATE = 51, OLECMDID_GETPRINTTEMPLATE = 52 } OLECMDID; OLECMDEXECOPTのパラメータはここ、 http://msdn.microsoft.com/library/en-us/com/htm/oen_a2z_5k38.asp を参照すると typedef enum { OLECMDEXECOPT_DODEFAULT = 0, OLECMDEXECOPT_PROMPTUSER = 1, LECMDEXECOPT_DONTPROMPTUSER = 2, OLECMDEXECOPT_SHOWHELP = 3 } OLECMDEXECOPT; と、書いてある。 ※なんとなくわかりそうな英単語のような、違う意味のような・・・ 危なく無さそうな、印刷プレビューのコマンドで実験してみます。
Sub ie_test() Const OLECMDID_PRINTPREVIEW = 7 '参照設定している場合は不要です Const OLECMDEXECOPT_DODEFAULT = 0 'テストなので、 Dim objIE As Object 'IEオブジェクト参照用 Dim a, b 'ダミー変数 'インターネットエクスプローラーのオブジェクトを作る Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True '見えるようにする(お約束) objIE.GoHome '表示終了まで待つ(ビジーの間ループする) Do While objIE.Busy = True DoEvents '何もしないループ(笑) Loop 'IEのメニューコマンドを実行する(7番のコマンド) objIE.ExecWB OLECMDID_PRINTPREVIEW, OLECMDEXECOPT_DODEFAULT End Sub |
Sub ie_test_検索() Const OLECMDID_SHOWFIND = 42 '参照設定している場合は不要です Const OLECMDEXECOPT_DODEFAULT = 0 'テストなので、 Dim objIE As Object 'IEオブジェクト参照用 Dim a, b 'ダミー変数 'インターネットエクスプローラーのオブジェクトを作る Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True '見えるようにする(お約束) objIE.GoHome '表示終了まで待つ(ビジーの間ループする) Do While objIE.Busy = True DoEvents '何もしないループ(笑) Loop 'IEをアクティブにする。 AppActivate "Microsoft Internet Explorer" SendKeys "^f", True 'Ctrl+Fをアクティブなアプリへ送る End Sub |
読者より、アドバイス/回答をいただく
-------
「OLECMDID_FIND」・「OLECMDID_SHOWFIND」が「効かない」旨の記事を書いていらっしゃいますが、
やっと、根拠を見出しましたのでお知らせいたします。
●ExecWB メソッドを呼び出すとランタイム エラー
http://support.microsoft.com/kb/251133/ja
>現象:Microsoft Web Browser コントロールに ExecWB メソッドを呼び出すと、次のエラー メッセージ・・・
>原因:この動作は仕様です。
>詳細:OLECMDID の値は次の IWebBrowser2::ExecWB() メソッドでは定義されていません。
>・OLECMDID_FIND
>・OLECMDID_SHOWFIND
三流解説を読んでいただき、どうもです。ここから下は、三流君宛のメッセージ送信や 三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、※質問や感想は、気軽に送ってくださいね。
[三流君 VBAでWebBrowser IEを操作する] / [三流君 VBAで楽しくプログラミング] / [AB型の変わり者 三流プログラマー Ken3 三流君Top]
大分類:[Document.Forms(入力処理)]
/ [Document.Links(リンク情報)]
/ [Document.Images(画像情報)]
/ [Document.Frames(フレーム処理)] | |
F1でヘルプを見たり、デバック時にDebug.Print使ったり、イミディエイト ウインドウで簡単な確認したり。 項目別に↓にプログラマーの本音?それとも建て前?的な記事をまとめました。お探しのジャンルを選択してください。 項目別に↓に人気の記事をまとめてみました。お探しのジャンルを選択してください。 Excel関係: Access関係: その他:VBAの共通関数やテキストファイルの操作など Blog:[三流君の作業日記]/
[objIEを使用したサンプルコードを見る]/
広告-[通販人気商品の足跡] |
三流プログラマーのKen3 が 皆さんの質問にお答えします
と カッコつけて言っても、実力不足ですべての質問に回答することはできないのが現実なのですが、できる範囲で 三流的な逃げ手 や 解決方法 を探します(回答します)。
感想や質問・要望・苦情など 三流君へメッセージを送る。
時間的余裕のある要望・質問・苦情の場合は、下記のフォームからメッセージを送ることができます。