[三流解説IEのトップページへ] / [IE メソッドの一覧へ 戻る]

.ExecWBメソッド とは

メソッド .ExecWB とは、機械和訳だと ExecWB です。(あまり意味無いか)
三流プログラマーの勝手な解釈・方言だと:
.ExecWB メソッド で いろいろなコマンドを発行できます。(動作が可能です。)
使い方は、
.ExecWB OLECMDID(コマンドID) , OLECMDEXECOPT(コマンドの動作)
です。
なので、IEで表示されているページを印刷、確認無しで即時印刷実行なら、
objIE.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER で印刷を実行します。

'印刷コマンド OLECMDID_PRINT = 6
'動作はOLECMDEXECOPT_DONTPROMPTUSER=2(DONT PROMPT USER)ユーザー入力無し
なので、

objIE.ExecWB 6, 2
でもOKです。

OLECMDID Enumeration
http://msdn.microsoft.com/en-us/library/ms691264.aspx をみて、対応するコマンドを探します。

OLECMDID_PRINT = 6
OLECMDID_PRINTPREVIEW = 7
など、イロイロとあります。

次は、
OLECMDEXECOPT Enumeration
http://msdn.microsoft.com/en-us/library/ms683930(VS.85).aspx
を見て、コマンドの動作を指定します。

OLECMDEXECOPT_DODEFAULT = 0ユーザーに入力を要求すると、既定の動作方が。
OLECMDEXECOPT_PROMPTUSER = 1、ユーザー入力の取得後、コマンドを実行します。
OLECMDEXECOPT_DONTPROMPTUSER = 2 ユーザーを確認せず、コマンドを実行します。
たとえば、[印刷] ツールバー ボタンをクリックしてがドキュメントをすぐにユーザー入力なし刷れています。
OLECMDEXECOPT_SHOWHELP = 3 は、対応するコマンドのヘルプを表示が実行されません。

下記、私がExecWBを探った時のドタバタ劇です。※みて笑ってください。

いろいろなコマンドがあるので、試してみてください


正式な解説・説明はMSDNで:[.ExecWB Methods]を見てください。


.ExecWB を 使用した三流サンプル

.ExecWBメソッド を 使用した三流サンプル を 紹介します

印刷処理

.ExecWBメソッド の テストで、印刷処理にチャレンジしてみました。※参照設定してから組むと楽ですよ。
'参照設定 Microsoft Internet Controls(Microsoft Browser Helpers)
'参照設定の方法は、 http://www.ken3.org/cgi-bin/group/vba_ie_object.asp をみてください。
Sub ie_test_0618()  'IEのコマンド 処理 ExecWB をテストする。

'IEの起動
    Dim objIE As InternetExplorer '変数を定義します。
    Set objIE = CreateObject("InternetExplorer.Application") 'オブジェクトを作成します。
    objIE.Visible = True      '可視、Trueで見えるようにします。
    
'表示位置(左上の座標)とサイズ(高さ・幅)を調整する
    objIE.FullScreen = False '※Trueのモードだとびっくりするよ
    objIE.Top = 100      '左上 上位置
    objIE.Left = 100     '左上 左位置
    objIE.Width = 800    '横幅
    objIE.Height = 600   '高さ
    
'XXXバー、外観・外枠の調整。
    objIE.Toolbar = True     'タブの切り替えで必要なので、ツールバーを表示にする
    objIE.MenuBar = False    'メニューは非表示にする
    objIE.AddressBar = True  'URLなど アドレスバーは確認のため、表示する
    objIE.StatusBar = True   '一番下のステータスバーを表示。

'処理したいページを表示します。
    objIE.Navigate "http://www.google.co.jp/"  '.Navigate メソッドで googleを表示する。

'ページの表示完了を待ちます。
    While objIE.ReadyState <> READYSTATE_COMPLETE Or objIE.Busy = True '.ReadyState <> 4の間まわる。
        DoEvents  '重いので嫌いな人居るけど。
    Wend
    
'ページが表示されたので、表示された文章に対して、処理を行います。
    'Document(タグ付き文章)からデータを取得したり、
    '.Formにデータをセットして送信したり。
    '.Linkリンク、リンク情報を取得したり、リンク先に移動したり。
    'フレームのページはイヤだけど
    'イメージなんて取り出せたりします。

    '今回は、.ExecWB メソッドを使い
    '印刷コマンド OLECMDID_PRINT = 6
    '動作はOLECMDEXECOPT_DONTPROMPTUSER = 2 ユーザー入力無し(DONT PROMPT USER)
    objIE.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER
    '↑こんな感じで、印刷コマンドを実行させてみました。

'処理が終わったので、IEを閉じます。
    'テストの時は、コメントアウトして残しておくと便利ですよ。
    'objIE.Quit  '.Quitで閉じる
    Set objIE = Nothing '使用したオブジェクト変数もキレイにしてね。
   
End Sub

下記、実行結果(私がExecWBを探った時のドタバタ劇)です。※みて笑ってください。

いろいろなコマンドがあるので、試してみてください

コピーと貼り付け

test028-2.aspのページを表示後、全て選択(OLECMDID_SELECTALL = 17)発行後、コピー(OLECMDID_COPY = 12)を連続発行してから、Excelに貼り付けてみます。
シートを追加しながら、3パターンの貼り付けを実行してみます
'IEコマンド発行のテスト  全てを選択・コピーしてから、シートに貼り付けてみる
Sub ie_test_ExecWB()

    Dim objIE    As Object  'IEオブジェクト参照用
    Set objIE = CreateObject("InternetExplorer.application") 'IEのオブジェクトを作る
    objIE.Visible = True '見えるようにする(お約束)

    '.Navigate で 指定した文字列のURLを開く
    objIE.Navigate "http://www.ken3.org/cgi-bin/test/test028-2.asp"

    '手抜きで2秒待つ(オブジェクトの展開時間を待つ)
    Application.Wait Time:=Now + TimeValue("00:00:02")  '2秒間 ボーっとする

    'テスト用に新規のブックを追加する
    Workbooks.Add  '新規ブックを追加
    
    '形式を選択して貼り付け HTML貼り付けのテスト
    objIE.ExecWB 17, 0  'OLECMDID_SELECTALL = 17 全てを選択
    objIE.ExecWB 12, 0  'OLECMDID_COPY = 12 コピー
    Sheets.Add          'テスト用のシートを新規追加する
    ActiveSheet.Name = "FormatHTML"  'シートに名前を付ける
    Range("A1").Select
    ActiveSheet.PasteSpecial Format:="HTML"
    
    '形式を選択して貼り付け Unicode テキスト貼り付けのテスト
    objIE.ExecWB 17, 0  'OLECMDID_SELECTALL = 17 全てを選択
    objIE.ExecWB 12, 0  'OLECMDID_COPY = 12 コピー
    Sheets.Add          'テスト用のシートを新規追加する
    ActiveSheet.Name = "FormatUnicode テキスト"  'シートに名前を付ける
    Range("A1").Select
    ActiveSheet.PasteSpecial Format:="Unicode テキスト"

    '形式を選択して貼り付け テキスト貼り付けのテスト
    objIE.ExecWB 17, 0  'OLECMDID_SELECTALL = 17 全てを選択
    objIE.ExecWB 12, 0  'OLECMDID_COPY = 12 コピー
    Sheets.Add          'テスト用のシートを新規追加する
    ActiveSheet.Name = "Formatテキスト"  'シートに名前を付ける
    Range("A1").Select
    ActiveSheet.PasteSpecial Format:="テキスト"

End Sub

操作手順と実行結果の動画:VBA IE ExecWBコマンドのテスト

う〜ん、使えそうな、使えなさそうな・・・全てじゃなくて、テーブルを指定して(範囲指定でドラックして)コピーできるといいんだけどなぁ。


ページフッター 検索と問い合わせ リンクほか

私がよく使う検索方法と手前味噌の自分のサイトをフッターで紹介します

Googleを使用して検索する

読者の声:三流君の説明・解説じゃ よくわからなかったから、Googleを使って、自分で検索します。
三流君:残念です。あっ、下記にGoogleの検索窓を設置しました。
オブジェクトの指定として : InternetExplorerWebBrowser
を指定しました。※この指定で検索するとサンプルが拾いやすいと思います。

Google
探す言葉:気になる単語や,オブジェクト(Document),プロパティ(.Busy)やメソッド(.Navigate)などを入れて検索してみてください。


言語を指定:見つからない時は指定無しで探す

サイト指定:人気QAサイト や 一次情報MS本家を指定する
一次情報・二次情報まとめから探る
QAサイトの質問から探る
検索実行: ←オプション確認後に検索ボタンを押してください

期間指定:情報の鮮度も大切?
検索実行: ←オプション確認後に検索ボタンを押してください

リンク と 問い合わせ、質問送信など

三流解説を読んでいただき、どうもです。ここから下は、三流君宛のメッセージ送信や 三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、※質問や感想は、気軽に送ってくださいね。

メッセージ送信

三流プログラマーのKen3 が 皆さんの質問にお答えします
と カッコつけて言っても、実力不足ですべての質問に回答することはできないのが現実なのですが、できる範囲で 三流的な逃げ手 や 解決方法 を探します(回答します)。

感想や質問・要望・苦情など 三流君へメッセージを送る。

時間的余裕のある要望・質問・苦情の場合は、下記のフォームからメッセージを送ることができます。
あなたのお名前(ニックネーム):さん
返信は?: 不用(HP更新を待つ) , E-mail→ アドレス:に返事をもらいたい



(感想や質問・要望 メッセージはHPで記事に載せることがあります。)

リンク

[VBA IE解説トップへ] / [sample サンプル一覧へ] / [Property プロパティの一覧へ] / [Methods メソッドの一覧へ] / [Events イベントの一覧へ]

[三流君 VBAでWebBrowser IEを操作する] / [三流君 VBAで楽しくプログラミング] / [AB型の変わり者 三流プログラマー Ken3 三流君Top]

F1でヘルプを見たり、デバック時にDebug.Print使ったり、イミディエイト ウインドウで簡単な確認したり。
なれると当たり前に操作している方法が↓かなぁ。
[F1ヘルプ マクロ記録ほか]・・・基本のF1を押してヘルプを見る方法など
[実行時エラー、デバッグモード]・・・デバッグの流れを簡単に(ハマった時はツライけど)
[イミディエイト ウインドウ と Debug.Print]・・・プログラム作成時に便利なイミディエイト ウインドウ
[VBA ウォッチ式とSTOPを使ってみた]・・・STOPで止め、ウォッチ式でオブジェクトの中身を確認する方法など
[参照設定のお話]・・・設定すると便利な(設定しないと使えない)、参照設定のお話

項目別に↓にプログラマーの本音?それとも建て前?的な記事をまとめました。お探しのジャンルを選択してください。
[プログラムは心? spirit]・・・プログラマー 心・気質・魂
[学ぶ study]・・・学習、技術の取得
[仕様書 doc]・・・仕様書・設計書関係の話

項目別に↓に人気の記事をまとめてみました。お探しのジャンルを選択してください。
[VBAでIE ウェブブラウザーを操作]・・・VBAでIE,WebBrowserを操作する サンプルです
[MSアクセス から エクセル を呼ぶ Excel.Application]・・・AccessからExcelを操作したりデータの書き出しなどです
[アウトルック メールの操作 Outlook.Application]・・・VBAからOutlookを使い、メール関係を処理するサンプルです
↑上記3つみたいなCreateObjectで他のアプリケーションを操作するサンプルが人気です。


[トップページへ 戻る]