0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Excel】印刷前のイベントマクロ。印刷キャンセルとか。

Last updated at Posted at 2020-04-18

印刷前に特定の列を非表示にする

下記の依頼を受けました。

「印刷領域の中に、お客様には見せたくない列が含まれているため、お客様への提出用として印刷する際には自動でこの列を非表示にしたい。」

この記事はこの案件についてのメモです。

やること

セルを非表示にするのは個人的に嫌いなので、セルの「表示・非表示」ではなく、アウトラインの機能を使用しました。印刷時にアウトラインを閉じるプログラムが起動するようにします。

1.非表示にする列にアウトラインを適用する
2.印刷時にアウトラインを折りたたむマクロを作成する

1 アウトラインの適用

  1. 表示・非表示を切り替えたい列を選択する

image.png

2.”データ”タブ→”グループ化”をクリックする
image.png

3.I列にアウトラインが適用される
image.png

2 印刷時にアウトラインを折りたたむマクロを作成する

印刷前に発動するトリガーとして、WorkbookオブジェクトにBeforePrintというイベントトリガーがあったのでこれを使用します。

1.Alt+F11でVBEを開き、”thisWorkbook”オブジェクトをダブルクリックする
image.png

2.下図の部分を左をWorkbook、右をBeforeprintを選択する
image.png

3.編集領域に印刷前に起動するプログラムを記述する

Private Sub Workbook_BeforePrint(Cancel As Boolean)
   'ここにプログラムを記述する。
End Sub
印刷前にアウトラインを閉じるプログラム
Private Sub Workbook_BeforePrint(Cancel As Boolean)       
    MsgBox ("印刷前にI列のアウトラインをすべて閉じます。")
    ActiveSheet.Outline.ShowLevels columnlevels:=1
End Sub

アウトラインの展開はs.Outline.ShowLevels columnlevels:=1の部分の数字で開閉を指示します。
すべて閉じる場合は1、すべて展開の場合は10です。
行のグループの場合はrowlevelsを使用します。

4.印刷する
作業完了しましたので印刷してみたところ、下図のようにプログラムに仕込んでおいたメッセージボックスが表示されました。成功です。。
image.png

印刷前に特定のセルの値をチェックする

別件ですが下記のような依頼も受けました。特定のセルが空白だったら印刷をキャンセルするという要望です。

「印刷前に特定の列に値の入力がされていなかったら(空白だったら)印刷前にアラートを出したい。」

Private Sub Workbook_BeforePrint(Cancel As Boolean)
    If sheets1.Range("A3") = "" Then
        If MsgBox("A3セルが空っぽです。印刷を続行してもよろしいですか?", vbYesNo) = vbNo Then
            '印刷続行中止が選択された場合に、印刷を中止する。
            MsgBox ("印刷を中止します。")
            Cancel = True
        End If
    End If
End Sub

印刷をさせない

社外秘のファイルなどで印刷を禁止したいファイルもあるかと思います。下記のように強制的に印刷をキャンセルすれば印刷させないことが可能です。

Private Sub Workbook_BeforePrint(Cancel As Boolean)
    MsgBox("このファイルは社外秘です。印刷はできません。")
    Cancel = True
End Sub
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?