Excel (VBA)

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

 
(Windows 10 Home : Excel 2016)
ファイル-印刷から表示される印刷画面を出す方法
投稿日時: 20/07/29 15:38:01
投稿者: Shun-ya

Excelを触ったことがない人のためにも画面上をシンプルに見せたいという発想から、リボンを非表示にしています。

Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)"

リボンが表示されていなくても操作できるマクロを開発しているわけでして。
 
あるシートに印刷ボタンを用意しました。
当初は、
ActiveSheet.PrintPreview

でプレビュー画面から印刷させれば良いと考えていたのですが、リボン非表示のプレビュー画面では印刷ボタンが表示されないため印刷できません。
よって、ファイル-印刷から表示される印刷画面を出せば済むと方針を変えたものの、それを出す命令が分からなく作業が滞っている状態です。
どなたかご助言いただければ助かります。
何卒よろしくお願い申し上げます。
 
【補足】
「プレビュー画面表示時のみリボンを表示する」という方法も考え付いたものの、画面を閉じた時に元に戻す方法が分かりません。

回答
投稿日時: 20/07/29 16:47:37
投稿者: あのん345

求められている回答ではないかもしれませんが
クイックアクセスツールバー → 印刷プレビューと印刷
での表示はどうですか?
 
リボンの表示非表示関係なく印刷ボタンはありますし
ファイルごとに設定しようと思えばできますし。
 
もしご希望にそっていたら嬉しいです。

投稿日時: 20/07/29 17:48:38
投稿者: Shun-ya

あのん345さま
アドバイスいただきありがとうございます。
対応策が全く見つからない最終手段としてはアリかと思います。
ただ、お客様に納品するものなので、クイックアクセスツールバーの追加作業が必須という仕様は避けたいところですね。

回答
投稿日時: 20/07/29 22:43:44
投稿者: simple

安定しないと評判?のSendkeysをあえて使ってみました。
動作確認してみてください。

Sub test()
    'ALT + F
    SendKeys "%F", True
    'ALT + P
    SendKeys "%P", True
    SendKeys "%", True
End Sub

まあ、お客様に提供するものですから、やめたほうがいいかもしれません。

回答
投稿日時: 20/07/30 00:28:20
投稿者: masa_sugahara
メールを送信

こんばんわ。
 
こんなのがあるようですが、お望みの内容でしょうか?
 
Application.Dialogs(xlDialogPrint).Show

回答
投稿日時: 20/07/30 00:43:35
投稿者: masa_sugahara
メールを送信

masa_sugahara さんの引用:
こんばんわ。
 
こんなのがあるようですが、お望みの内容でしょうか?
 
Application.Dialogs(xlDialogPrint).Show

 
こっちの方がよさそうですね。
 
Sub test()
 
    With Application
        .ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",true)"
        .Dialogs(xlDialogPrintPreview).Show
        .ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)"
    End With
 
End Sub

回答
投稿日時: 20/07/30 07:39:34
投稿者: simple

Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",True)"
call test
Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)"
のようにしても、最後の命令で当該画面は消されるようですね。
3行目をコメントアウトすればよいが、
印刷終了後はリボン表示に戻ってしまうので、NGでしょう。
 
結局、リボン非表示と当該画面の利用は両立しないということではないかと思います。

投稿日時: 20/07/30 15:23:28
投稿者: Shun-ya

simpleさま
 
私が一番望んでいた「印刷画面を出す」は以下のコードで実現できました。
 

SendKeys "^(p)"

挙動も問題なさそうなのでこれで行きたいと思います。
本当に助かりました。
ひとりで考えると「SendKeys」の発想は出ませんでした。
 
 masa_sugaharaさま
 
    With Application
        .ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",true)"
        .Dialogs(xlDialogPrintPreview).Show
        .ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)"
    End With

 
これでも行けそうですね。
simpleさまが言うようにSendKeysが不安定なのであればこちらを採用させていただきます。
心より感謝申し上げます。