KoMaDo   VISIO SQUARE : VB/VBA  ■ Headline ■ HOME    

VB/VBAトップへ ▼カッ飛び最後 

  印刷ダイアログの印刷範囲をVBAから設定するには

01: 名前:yuko投稿日:2007/12/26(水) 17:32
DoCmdで印刷ダイアログを表示する方法は以前の掲示板で分かりましたが、印刷範囲で"現在のページ"が選択されるようにできますでしょうか?

02: 名前:yoda投稿日:2007/12/26(水) 18:30
分かりませんので、マクロを記録してみました。
Application.ActiveDocument.PrintOut PrintRange:=visPrintCurrentPage, _
PrinterName:="Microsoft Office Document Image Writer"

そのあと、PrintOutメソッドについて、F1を押して
ヘルプを表示してみました。そこには、
こんなサンプルが、あるでは、ありませんか。
'現在のページを 2 部既定のプリンタで印刷します。
ThisDocument.PrintOut visPrintCurrentPage, , , , , , , 2

03: 名前:yoda投稿日:2007/12/27(木) 09:01
Application.DoCmd visCmdFilePrint で出てくるダイアログは、
アプリケーションモーダルですので、ダイアログが表示されて
いる間は、VisioのVBAはそこで、ウエイティングの状態になって
しまいます。そのため、ダイアログの上で、オプションを選択する
ことは、VisioのVBAでは、できませんので、全く別の、独立した
プログラムを作り、そこから、Visioのダイアログに対して、たとえ
ば、ALT+E と、SendKeyコマンドを発行することが、必要になる
のではないかと、思います。スマートな解決方法とは、とても
言えませんが。

04: 名前:yuko投稿日:2007/12/27(木) 09:44
yodaさんありがとうございます。
試してみましたところ、そのまま印刷が実行されてしまいました。
印刷ダイアログを表示したまま、"現在のページ"ボタンが選択された
状態にはならないようです。もう少し調べてみます。

05: 名前:M1号投稿日:2007/12/27(木) 17:44
Application.ActiveDocument.PrintOut visPrintFromTo, Application.ActivePage.Index, Application.ActivePage.Index

こんなんでどうでしょう?

06: 名前:yoda投稿日:2007/12/27(木) 17:47
PrintOut の場合は、そのまま印刷になると思います。
説明不足で申し訳ありませんでした。
03の説明で、"現在のページ"ボタンが選択された
状態にする案を述べたつもりでしたが、これも、
説明不足だったようですね。すみませんでした。

07: 名前:M1号投稿日:2007/12/27(木) 20:12
私の勘違いですね(^_^;)

印刷ダイアログを表示した状態で、
且つ
"現在のページ"ボタンが選択された状況を作るわけですね。

印刷ダイアログを表示した時のデフォルトが"現在のページ"であれば良いのでしょうか?

08: 名前:M1号投稿日:2007/12/27(木) 23:04
DoCmdでダイアログを出してから、SendKeysでは同期ズレが起こりやすいので、
いっそのこと全部SendKeysのほうがいいと思います。

SendKeys ("%FP+{TAB}{DOWN}")

※上記はVBA環境からでは動きません。
必ずVISIOのメインメニューから「ツール-マクロ-〜」で動かしてください。

趣味の範囲ならこれでも十分ですがSendKeys は確実性に乏しいので、
業務として使われるならSendMessageやPostMessageを使われたほうがいいでしょう。


VB/VBAトップへ ▲カッ飛び先頭