
VBA初心者です。
イベントプロシージャ 「beforeprint」 を使用して
印刷時、不要なオートシェイプを不可視にしています。
~~ visible = false
にすると、確かに印刷時に消えてくれるのですが
印刷が終わった後も消えたままなのです。
印刷が終わったあと、オートシェイプを再可視化するには
どうしたらよろしいでしょうか??
可視化に限らず、印刷後(もしくは印刷プレビューを閉じた後)
なんらかの処理を加える方法でもかまいません。
ヒントだけでもいいので、なにとぞアドバイスの程よろしくお願いいたします!
No.1ベストアンサー
- 回答日時:
こんばんは。
以下のように、元にもどすのに、ほんのちょっと時間差を設ければよいはずです。
印刷中は、印刷バッファに送られますから、オートシェイプは、ない状態のままですし、シートは待機モード中です。その間に、命令を送ってしまえばよいと思います。なお、こういう場合、Excelのバージョンによっては違ったアイデアもあるはずです。
以下の3秒でよいのかは、調整してください。
'//ThisWorkbook モジュール
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim sp As Shape
For Each sp In ActiveSheet.Shapes
sp.Visible = msoFalse
Next
ThisWorkbook.OnTimeMethod
End Sub
Sub OnTimeMethod()
Application.OnTime Now + TimeValue("00:00:03"), "ThisWorkbook.TestExec"
End Sub
Sub TestExec()
Dim sp As Shape
For Each sp In ActiveSheet.Shapes
sp.Visible = msoTrue
Next
End Sub
この回答への補足
申し訳ありません、beforeprintの方は実行されるのですが、
その後のTestExecの方が実行されません。
timevalueを変えてみたのですが、元にもどらないままになってしまいます…
エクセルのバージョンが2001なのですが、何か関係あるのでしょうか…?
ご回答いただきありがとうございます。
OnTimeMethodというのははじめて知りました!
時間差をつけられるというのはとても画期的な機能ですね。
内容を勉強して、早速試してみたいと思います。
No.2
- 回答日時:
オートシェイプを印刷したくないだけなら、イベントを使わずとも
シェイプ右クリックメニューから[オートシェイプの書式設定]-[プロパティ]で
「オブジェクトを印刷する」のチェックボックスを外すと印刷対象外にする事ができます。
もしコードで対応したいなら
Sheets("Sheet1").Shapes("シェイプ名").DrawingObject.PrintObject = False
選択して実行する場合は
Selection.PrintObject = False
手動でも良いので .PrintObject = False に設定しておいて、
逆に、印刷したい時だけ .PrintObject = True にしても良いかと。
この回答への補足
こちらから失礼いたします。end-uさま申し訳ありません。
>WindFallerさま
下記補足にて、ontime以降が実行されないと書きましたが、私の手違いでした。
WindFallerさまのご回答で、無事実行されましたことをご報告させていただきます。
まことにありがとうございました。本当に助かりました^^
ご回答ありがとうございます。
今回はオブジェクトを印刷したくないという以外に、セルの非表示・グラフの移動といった
印刷時のレイアウト要素が強いので、オブジェクトを印刷対象外にするだけでは対応できない
現状があります。
しかしend-uさまのアドバイスは非常に勉強になりました。
特にオブジェクトを印刷対象外にすることができるというのは知りませんでした。
このツールを活用していきたいと思います!^^
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelであるシートだけ印刷できない 1 2022/04/01 09:04
- Excel(エクセル) エクセルの印刷範囲をページ単位で可変にする方法 3 2022/05/23 13:04
- Visual Basic(VBA) DisplayAlertsブロパティで ”実行時エラー424オブジェクトが必要です” 5 2022/05/15 18:02
- Visual Basic(VBA) 数式が消える 1 2023/03/19 16:55
- UNIX・Linux Ubuntu22.04、nanoエディタの使い方について 2 2022/10/24 19:50
- その他(パソコン・スマホ・電化製品) Webページ印刷時にヘッダー・フッターをつけたい 1 2022/04/25 21:35
- Excel(エクセル) 【Excel】複数シートがあるエクセルデータで片面印刷と両面印刷設定がシートごとに入 1 2023/03/10 15:25
- Visual Basic(VBA) VBAで不特定枚数印刷をしたいです。 4 2022/08/02 07:30
- プリンタ・スキャナー モノクロ印刷しかしてないのにカラーインクが減るのは何故? 6 2022/09/29 23:17
- PDF 2つのPDFを重ねる方法はありますか? 4 2023/01/30 14:04
このQ&Aを見た人はこんなQ&Aも見ています
-
Excel VBA の印刷後の判定
Excel(エクセル)
-
EXCEL VBA 印刷プレビューダイアログのボタン操作を判定したい
Visual Basic(VBA)
-
エクセルのマクロで印刷プレビューを閉じる方法
Excel(エクセル)
-
-
4
エクセルのマクロ
Excel(エクセル)
-
5
ACCESSで印刷プレビューをした後の印刷ボタンを押したイベント取得につて
その他(プログラミング・Web制作)
-
6
印刷をキャンセル
Excel(エクセル)
-
7
VBAで印刷スプール終了の判定をする
Visual Basic(VBA)
-
8
マクロを使って、シート印刷完了時にシートに”完了”マークをつけたいのですが
Visual Basic(VBA)
-
9
マクロで印刷→セルの値から部数変更するには
Excel(エクセル)
-
10
マクロ実行後に別シートの残像が残り、オブジェクトが見えなくなる
Visual Basic(VBA)
-
11
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
12
マクロ実行時 ウィンドウで実行するか確認する
Excel(エクセル)
-
13
エクセルで複数のシートのクリアをしたいです
Excel(エクセル)
-
14
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
15
印刷後メッセージボックスを表示したい
Access(アクセス)
-
16
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
17
別ブックをダイアログボックスで指定してそこにあるシートをコピーしたい
Excel(エクセル)
-
18
エクセルvbaでdocuworksprinterの出力先を設定
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DirectX利用プログラムにおける...
-
Crystal Report...
-
Userform内のFrameのCaptionが...
-
JSPに表示させたテーブルをEXCE...
-
ActiveXで印刷処理
-
印刷機能について
-
PHPからVBで作った文書印刷処理...
-
htmlの印刷
-
VBAで印刷の成功判定
-
印刷
-
phpでの自動印刷
-
ドットプリンタでバーコードの印刷
-
IEからの画像(jpeg)印刷について
-
エクセル VBA 印刷モジュール
-
MFCと.NETFramework
-
CUBASE AIのセットアップについ...
-
FlashPlayer Plug-in の制御方...
-
vb2005の新刊書籍のロードマッ...
-
スキャナーを使用するアプリケ...
-
VB5で起動回数の制限をかけたい。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
印刷ダイアログを表示させない方法
-
vbaでPDFファイルが印刷されない
-
印刷ダイアログを表示させたくない
-
印刷要求順番と印刷出力順番が...
-
A4の2枚をA3の1枚にする編集方法?
-
オートメーションエラー(214741...
-
VBscriptでPDFファイルを直接印...
-
プリンターを指定して印刷するには
-
EXCELファイルの複数ダウンロー...
-
ACCESSで設定した帳票の用紙サ...
-
VB2005から複合機を使い自動FAX...
-
VBAで印刷スプール終了の判定を...
-
PHPでPDFファイルの直接印刷
-
2回以上PDFをコピーや印刷がで...
-
テキストファイル印刷 .net VB...
-
VBAで印刷の成功判定
-
VBでExcel印刷する時のプリンタ...
-
VB.NET+ActiveReports で印刷...
-
クリレポのプリンタ設定について
-
VB6上から印刷ダイアログを表示...
おすすめ情報