[[20230201120658]] 『PrintPreview実行時、拡大表示だと閉じるが動作し』(VBA初心者) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『PrintPreview実行時、拡大表示だと閉じるが動作しない』(VBA初心者)

VBA初心者の為どうぞよろしくお願い致します。
シートの印刷画面を表示後、指定場所にファイルを保存するように動作させたいのですが、
印刷プレビュー画面を表示した時、拡大すると閉じるボタンが押せず
縮小だと閉じるボタンが押せます。
PCによっては、拡大・縮小どちらも問題なく閉じるボタンが押せます。
PCによって機能しないのは制限することができるのでしょうか。
ご教授どうぞよろしくお願い致します。

Dim SavePath As String

SavePath = "C:\test.pdf"

sheet1.PrintPreview EnableChanges:=False

If MsgBox("作成しますか?", vbQuestion + vbYesNo) = vbYes Then

   Sheet1.ExportAsFixedFormat Type:=xlTypePDF, Filename:=SavePath, OpenAfterPublish:=True

Else

   Sheet1.Visible = False
End If

< 使用 Excel:Microsoft365、使用 OS:Windows10 >


 2013で再現できず・・・
 リボンが閉じているだけとかはないですよね?
 閉じるボタンが押せないときは、マクロをどうやって止めてます?
 ESCキーだと思うのですが、それでプレビュー閉じられるから進めますよね
 また手動でも同じ状況ですか?

 コーディングとしては、
 1)プリントプレビューが必要ない仕組みに変えるのが一番の手だと思うのですけど、
   プレビューは何を目的としてますか?
 
   項目の入力漏れならチェックできるでしょうし
   体裁がずれる内容であれば等幅フォントなどを活用してなるべく画面通り印刷されるように
   調整したりするなど対策されてはいかがでしょうか?

 2)閉じるを押さなくてもESCを押して進めることを周知する
    事前にmsgboxで表示する
    Sheet1にデカデカとESCキーで閉じるよう促し、出力する前に消す

 失敗例
  UserFormのModelessで表示しっぱなしにして、UserForm上に閉じるコマンドを仕込んでおく
   →PrintPreviewがModalで開いているので、Userformのボタンが押せなかった

  ApplicationOntimeで指定秒後にESCキー送る
   →同じく、Modalで開いていたので、実行できなかった

  PDFを出力した後、PDFを非同期で開いて、そのあとPDFを削除するかどうか決める
   →出力に時間がかかるので採用しにくい・・・

(稲葉) 2023/02/01(水) 19:25:15


早速のご返信ありがとうございます。

印刷プレビュー画面は非表示設定しているシートを保存する前に確認用に利用しています。
非表示設定シートは閲覧できないようにしたいためマクロで実行させるようにしています。

印刷プレビューにて、書類を拡大していて閉じるボタンが押せない時は
画面の✖をクリックすることで次のステップが実行されます。

ただし拡大状態から縮小画面にすると閉じるボタンが押せますので、
そちらで回避している状態です。

そして大半は拡大でも問題なく閉じるボタンが押せます。
(VBA初心者) 2023/02/02(木) 12:11:06


事情をよく理解できていませんが、
「印刷プレビューを閉じる」というボタンが淡色表示になるということですか?
それともフリーズかなにかするんでしょうか。

また、説明からすると
sheet1.PrintPreview EnableChanges:=False
を実行する前に、一時的に
Sheet1.Visible = True
にしているということですか?
(というのは、私のExcel2019環境では、非表示シートに対して
 PrintPreviewを実行しようとするとエラーになるので。)
 
もしそうなら、
Sheet1.Visible = True
Sheet1.Select    '←追加
を実行してから印刷プレビューしても事態は変わりませんか?
ダメ元で。
(abc) 2023/02/02(木) 14:55:33


印刷プレビューする前にShee1を表示するようにこちらを記載しています。
Sheet1.Visible = True

表示は特に淡くなることもなく動作しない状態です。
ただESCにて逃げることも可能なので、こちらにて対応しようかと思います。
ありがとうございました。
(VBA初心者) 2023/02/02(木) 18:31:28


Sheet1.Visible = True
だけではなくて、
Sheet1.Visible = True
Sheet1.Select
というコードを実行してからSheet1をプレビューする方法を
念のため試して欲しいと申し上げていたのですが、伝わらなくて残念です。

それで解決する保証まったくありません。
ただ、プレビュー対象のシートがアクティブな状態ではなく、
プレビューを終えて戻る先のシートが不定のときに
フリーズなどの異常が起きることがある旨の記事があったので、
淡い期待を持って申し上げました。残念。

(abc) 2023/02/02(木) 18:49:23


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.