プロが教える店舗&オフィスのセキュリティ対策術

VBA初心者です。

イベントプロシージャ 「beforeprint」 を使用して
印刷時、不要なオートシェイプを不可視にしています。

~~ visible = false

にすると、確かに印刷時に消えてくれるのですが
印刷が終わった後も消えたままなのです。

印刷が終わったあと、オートシェイプを再可視化するには
どうしたらよろしいでしょうか??

可視化に限らず、印刷後(もしくは印刷プレビューを閉じた後)
なんらかの処理を加える方法でもかまいません。

ヒントだけでもいいので、なにとぞアドバイスの程よろしくお願いいたします!

A 回答 (2件)

こんばんは。



以下のように、元にもどすのに、ほんのちょっと時間差を設ければよいはずです。
印刷中は、印刷バッファに送られますから、オートシェイプは、ない状態のままですし、シートは待機モード中です。その間に、命令を送ってしまえばよいと思います。なお、こういう場合、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なのですが、何か関係あるのでしょうか…?

補足日時:2012/10/29 10:41
    • good
    • 0
この回答へのお礼

ご回答いただきありがとうございます。

OnTimeMethodというのははじめて知りました!
時間差をつけられるというのはとても画期的な機能ですね。

内容を勉強して、早速試してみたいと思います。

お礼日時:2012/10/29 09:32

オートシェイプを印刷したくないだけなら、イベントを使わずとも


シェイプ右クリックメニューから[オートシェイプの書式設定]-[プロパティ]で
「オブジェクトを印刷する」のチェックボックスを外すと印刷対象外にする事ができます。

もしコードで対応したいなら
Sheets("Sheet1").Shapes("シェイプ名").DrawingObject.PrintObject = False
選択して実行する場合は
Selection.PrintObject = False

手動でも良いので .PrintObject = False に設定しておいて、
逆に、印刷したい時だけ .PrintObject = True にしても良いかと。

この回答への補足

こちらから失礼いたします。end-uさま申し訳ありません。


>WindFallerさま
下記補足にて、ontime以降が実行されないと書きましたが、私の手違いでした。
WindFallerさまのご回答で、無事実行されましたことをご報告させていただきます。

まことにありがとうございました。本当に助かりました^^

補足日時:2012/10/29 10:58
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

今回はオブジェクトを印刷したくないという以外に、セルの非表示・グラフの移動といった
印刷時のレイアウト要素が強いので、オブジェクトを印刷対象外にするだけでは対応できない
現状があります。

しかしend-uさまのアドバイスは非常に勉強になりました。
特にオブジェクトを印刷対象外にすることができるというのは知りませんでした。
このツールを活用していきたいと思います!^^

ありがとうございました。

お礼日時:2012/10/29 09:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています