「excel vba オブジェクトを印刷しない」
「Excel VBA オブジェクトを印刷するにチェック」
といった検索キーワードでのアクセスが時折あります。
図形などの描画オブジェクトは、印刷するかどうかを[オブジェクトを印刷する]チェックボックスで設定できます。
この設定変更をVBAから行うには、どのようなコードを書けばいいのかを探していらしたのでしょう。
オブジェクトを印刷するチェックボックスをすべてOffにするサンプル
以下のSubプロシージャを実行すると、アクティブシート上の全描画オブジェクトの[オブジェクトを印刷する]チェックボックスがOffになります。
Dim shp As Shape
For Each shp In ActiveSheet.Shapes
shp.ControlFormat.PrintObject = False
Next
End Sub
逆に[オブジェクトを印刷する]チェックボックスをOnにしたい場合は、
shp.ControlFormat.PrintObject = True
です。
サンプルマクロで利用しているオブジェクト式について
アクティブシート上の四角形を選択して、[オブジェクトを印刷する]チェックボックスをOffにする操作をマクロ記録すると、
ActiveSheet.Shapes.Range(Array("Rectangle 1")).Select
Selection.PrintObject = msoFalse
といったコードが作られます。
[オブジェクトを印刷する]チェックボックスをOffにしているのはもちろん、
Selection.PrintObject = msoFalse
です。
ただしこのSelectionプロパティが返すのは、レガシーなRectangleオブジェクトです。
このままでは汎用的なコードを作れないので、「printobject」を、オブジェクトブラウザーで検索してみると、
ControlFormatオブジェクトに、PrintObjectプロパティが存在していることがわかります。
そこで、ShapeオブジェクトのControlFormatプロパティでControlFormatオブジェクトを取得する、
上記のようなコードにしました。
Home » エクセルマクロ・Excel VBAの使い方 » Shapesコレクション・Shapeオブジェクト » VBAでオブジェクトを印刷する設定の変更