Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Excel 2016)
xlDialogPrinterSetupの設定ボタンについて
投稿日時: 20/05/11 12:08:54
投稿者: 53imaketad

お世話になります。
 
コマンドボタンを押したら、プリンターを選び、マクロの処理をしてから印刷という事をしたいです。
処理自体は上手くいきますが、xlDialogPrinterSetup.Showの際に表示されるダイアログボックスの設定ボタンについて教えて下さい。
 
このボタンを押すとアクティブなプリンターの設定画面が表示されますが、これをダイアログボックスで選んだ別のプリンターの設定画面を開くことは可能でしょうか?別のプリンターを選んでもアクティブなプリンターの設定画面しか表示されなくて、もどかしいです。
 
このダイアログボックスで選んだプリンターをアクティブなプリンターに切り替える、といった処理が必要なのでしょうか?
 
よろしくお願いします。

回答
投稿日時: 20/05/11 14:02:40
投稿者: WinArrow
投稿者のウェブサイトに移動

53imaketad さんの引用:

このボタンを押すとアクティブなプリンターの設定画面が表示されますが、これをダイアログボックスで選んだ別のプリンターの設定画面を開くことは可能でしょうか?別のプリンターを選んでもアクティブなプリンターの設定画面しか表示されなくて、もどかしいです。
 
このダイアログボックスで選んだプリンターをアクティブなプリンターに切り替える、といった処理が必要なのでしょうか?
 
よろしくお願いします。

 
>このボタンを押すとアクティブなプリンターの設定画面が表示されます
 
その様ですね。・・・・・
一旦、OKで切り替えないと適用されないということでしょう。
「設定」ボタンの意味がないような気gしますね。
 

回答
投稿日時: 20/05/12 07:40:09
投稿者: simple

VBAのヘルプの「組み込みダイアログ ボックス引数一覧」のなかに、使用可能な引数として
xlDialogPrinterSetup printer_text
と書いてあるのでできると思いましたが、確かにうまくいかないですね。
そこで、予め ActivePrinterを変更することにしました。
 
たとえばこんな風にしてみては?

Sub test()
    Const p1 As String = "xxxx"
    Const p2 As String = "yyyy"
    
    Dim p As String
    p = p1     'テスト実行
'    p = p2      'テスト実行
    ActivePrinter = p
    Application.SendKeys "%s"
    Application.Dialogs(xlDialogPrinterSetup).Show Arg1:=p
End Sub

なお、プリンター名は、イミディエイトウインドウで
?ActivePrinter
などとすると判明しますので、それをそのまま使います。(ポート番号もそのまま)

回答
投稿日時: 20/05/12 08:00:45
投稿者: WinArrow
投稿者のウェブサイトに移動

ダイアログ(xlDialogPrinterSetup)を使わずに
 
代案
Application.CommandBars.ExecuteMso "PrintPreviewAndPrint"
 

投稿日時: 20/05/15 08:42:57
投稿者: 53imaketad

返信が遅くなり申し訳ございません。
 
WinArrow様、simple様、代替案のご提示ありがとうございました。
 
二度手間感がありますが、まずユーザーフォームで使いたいプリンターを選んでアクティブプリンターを切り替える、その後xlDialogPrinterSetupで設定するという方向にしたいと思います。
 
ありがとうございました。