[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBAでIE操作』(あや)
Excel2003 XP IE9
javascriptを使って作られた IEで動いているシステムがあり、 繰り返し作業はVBAで自動化させようとしています。
IE上にPDFが表示されている画面があり、 その画面を印刷しようとしています。 (アクロバットリーダーの上に表示されているのではなく、 左上のアイコンは、IEでその中にPDFが表示されています)
マウスで操作の場合は、 IE上に表示されたPDF画面にある プリンタのアイコンをクリックし (ファイル(F) 編集(E)などの文字がないので) 印刷ダイアログが出るので OKを押して 印刷しています。
そこをVBAで操作をしており、 ダイアログまでは出ましたが OKが押せません。
↓ダイアログまで出る記述↓
Private Declare Function SetForegroundWindow Lib "user32.dll" (ByVal hwnd As Long) As Long
’該当のIEウィンドウを選択しObjIEに入れる
For Each Windw In CreateObject("Shell.Application").Windows
If Windw.LocationURL = "http://○○○○" Then
Exit For
End If
Next
Set ObjIE = Windw
SetForegroundWindow (ObjIE.hwnd)
Call sWait(Obj)
’印刷
ObjIE.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER
-----☆
Call sWait(Obj)
Call sWait(Obj)
Call sWait(Obj)
Call sWait(Obj)
Call sWait(Obj)
SendKeys "{ENTER}"
☆のところで、印刷ダイアログは出ます。 印刷ダイアログにあるプレビューの読み込みに時間がかかるので しばらく待って、SendKeysを使ってみましたが 画面反応なしでした。
ちなみに、フォーカスは印刷ダイアログにあります。 キーボードでEnterを押すと、印刷は出来ます。
どのようにしたら良いでしょう?
印刷に関して参考にさせてもらったのは、 http://ie.vba-ken3.jp/Methods/ExecWB/ です。
IEに表示された普通のwebページであれば、 ObjIE.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER を実行すると、すぐに印刷ができます。 (印刷ダイアログは出ません)
*いろいろ教えていただいて、組み合わせて使わせてもらっています…
続けて投稿すみません。
書き込んでから考えてたのですが [[20130521114840]] と似た感じで
javascriptで送ってからSendkeysだとうまくいくのかな?
ためしてみます。
(あや)
最初からそのように説明されていると、目的が分かりやすかったと思いますが、 対象となる PDF は静的なファイル(サーバにある?)でしょうか? それとも操作によって動的に作成されるものでしょうか。
いずれにしても、手動でかまいませんが、PDF をローカルに保存することは出来ますか? 一度に印刷が難しくても、一旦ファイルとして保存して一括印刷のような 手段もありそうに思えました。
参照されているKen3さんのところですけれど、こんなのもありますね。 http://www.ken3.org/vba/backno/vba120.html 一括印刷も検索すればいろいろと見つかりそうです。 http://dekiru.impress.co.jp/contents/045/04557.htm
新しい方法に切り替えるのが却って手間取りそうでしたら、読み飛ばしてください。 (Mook)
それと、2つ目のIEオブジェクトがObjIEならば、sWait(ObjIE) ではないですか?
(???)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.