Home » エクセルマクロ・Excel VBAの使い方 » Shapesコレクション・Shapeオブジェクト » VBAでオブジェクトを印刷する設定の変更

対象:Excel2010, Excel2013, Windows版Excel2016

「excel vba オブジェクトを印刷しない」
「Excel VBA オブジェクトを印刷するにチェック」
といった検索キーワードでのアクセスが時折あります。

図形などの描画オブジェクトは、印刷するかどうかを[オブジェクトを印刷する]チェックボックスで設定できます。

[スポンサードリンク]

この設定変更をVBAから行うには、どのようなコードを書けばいいのかを探していらしたのでしょう。

オブジェクトを印刷するチェックボックスをすべてOffにするサンプル

以下のSubプロシージャを実行すると、アクティブシート上の全描画オブジェクトの[オブジェクトを印刷する]チェックボックスが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」を、オブジェクトブラウザーで検索してみると、

オブジェクトブラウザー:printobject

ControlFormatオブジェクトに、PrintObjectプロパティが存在していることがわかります。

そこで、ShapeオブジェクトのControlFormatプロパティでControlFormatオブジェクトを取得する、

オブジェクトブラウザー:Shape.ControlFormat

上記のようなコードにしました。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Shapesコレクション・Shapeオブジェクト » VBAでオブジェクトを印刷する設定の変更

「Shapesコレクション・Shapeオブジェクト」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.