• 締切済み

excelでシートごと印刷しない設定にしたい

選択したEXCELブックを全シート印刷するツールがありまして こいつの運用で頭を悩ませています。 印刷範囲設定をかけたりシート非表示にすれば不要部分は印刷されないのですが、 表示する必要があるが印刷は不要というシートがあって、 一セルだけ印刷範囲に選んでそのセルを非表示とかにしても空白ページが1ページ印刷されてしまいます。 EXCELの特定シートをまるごと印刷しない設定とか方法は無いでしょうか。 EXCEL2016、マクロは使用可能です。 ツールは内部的に全シート選択&印刷をやっているのだと思います。 ツールを使わないという選択肢は無しです。 よろしくお願いします。

みんなの回答

  • SI299792
  • ベストアンサー率47% (772/1616)
回答No.6

>ツールに関してですが個別販売はされておりません。 であれば、ツールの情報を聞いても無駄ですね。でも、どうしてもそのツールを使わなければならない事情は解りました。  非表示にすれば印刷されないのであれば、印刷前に非表示にするというのはどうでしょうか。問題は、AfterPrintというイベントがないので、印刷後再表示はできない事です。しかし、閉じる時に印刷するのならば、開く時に再表示すればいいです。  シートモジュールのThisWorkbookをダブルクリックして、そこに入れて下さい。 ' Option Explicit ' Private Sub Workbook_BeforePrint(Cancel As Boolean) '  印刷前に印刷範囲を指定していないシートを非表示にする   Dim Sheet As Worksheet '   For Each Sheet In Worksheets '     If Sheet.PageSetup.PrintArea = "" Then       Sheet.Visible = False     End If   Next Sheet End Sub ' Private Sub Workbook_Open() '  印刷範囲を指定していないシートを表示にする   Dim Sheet As Worksheet '   For Each Sheet In Worksheets '     If Sheet.PageSetup.PrintArea = "" Then       Sheet.Visible = True     End If   Next Sheet End Sub  だだ、各ワークブックにこのマクロを入れなければなりません。もし、対象のワークブックが沢山あるなら、実用的ではありません。  その場合、前に上げた回答を応用して、各ワークブックにマクロを入れなくても印刷前に非表示、開く時に再表示という事もあります。1つの回答にたくさん書くと混乱するし、この方法が貴方が気に入るかどうか判りません。それに、この方法がそのツールに有効かどうかも、やってみないと判りません。

ann_k
質問者

お礼

お礼が遅くなり申し訳ありません。 様々検討しましたが、それぞれ問題があり未だ決定打なく 色々お試し中です。 アイデアは参考にさせていただきます。 とても勉強になりました。ありがとうございました。

  • SI299792
  • ベストアンサー率47% (772/1616)
回答No.5

こちらこそ申し訳ない。 実は、「ツールを使わないという選択肢は無しです。」というのを見落としていました。 後から気づいたものの、ここでは回答の削除ができないので、放置するしかなかったのです。 「全シート印刷するツール」とは、どこから手に入れた何というツールなのでしょうか。 シートに印刷しない設定というのはありません。Excel は、そのツールを使うことを想定していません。ツールにそのような機能がない限り不可能です。 代替案です。ツールを使う方法でないので、お気に召さないかもしれません。 終了すると全印刷をするマクロです。 空白のワークブックでシートモジュールのThisWorkbookに入れて下さい。 次にこのマクロを入れたワークブックを保存して再起動します。 このワークブックを開いておけば、他のワークブックの終了時に印刷範囲を指定してあるシートを印刷します。 ' Option Explicit Private WithEvents xlApp As Application ' Private Sub Workbook_Open() '   Set xlApp = Application End Sub ' Private Sub Workbook_BeforeClose(Cancel As Boolean) '   Set xlApp = Nothing End Sub ' Private Sub xlApp_WorkbookBeforeClose(ByVal wb As Workbook, Cancel As Boolean) '   Dim Sheet As Worksheet '   Debug.Print wb.Name '   For Each Sheet In wb.Worksheets '     If Sheet.PageSetup.PrintArea > "" Then       Sheet.PrintOut     End If   Next Sheet End Sub

ann_k
質問者

お礼

回答ありがとうございます。 ツールに関してですが個別販売はされておりません。 大手ベンダーのとあるパッケージソフトの一部というところまでで勘弁してください。 〇シートに印刷しない設定というのはありません。 この言葉だけで助かります。 あるかないかわからないものを探すのはキビシイ作業なので。 色々調べたところ、プリンタ側に白紙をスキップするような機能が ついているものがちらほらあるようで、そちらで対応できないか調査中です。

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.4

今晩は,回答No.3です。 >知りたいものは確かにある意味フィルタなのですが。 1.フィルタの設定 1-1.表の形式ですが、私はまず表名、作成日、ページ/総ページをヘッダに記述 1-2.1行目を項目名 1-3.2行目以降に情報 この形式でフィルタをかけます。 [1行目の任意のセル]→[データリボン]→[フィルタ] これでsheetのフィルタの用意が出来ました。 よく見かける表に 1行目表名、2行目項目名、3行目以降情報 このときは、項目名の行を1行目にするため、表名の行を削除して、 フィルタをかけ、表名の行を項目名の上に挿入します。 マクロは「フィルタセット」、「フィルタリセット」です >選択したEXCELブックを全シート印刷するツールがありまして  これがVBAなら  Private Sub() で始まり  End Sub で終わっています このPrivate Sub()の次の行にフィルタセットを挿入します また、 VBA起動から Private Sub Worksheet_SelectionChange(ByVal Target As Range) フィルタリセット End Sub とします

ann_k
質問者

お礼

回答ありがとうございます。 私がやりたいことは、この方法では実現できなさそうです。 ありがとうございました。

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.3

フィルタ機能をVBAではなくマクロ記録で組み込めば出来るのでは

ann_k
質問者

お礼

回答ありがとうございます。 知りたいものは確かにある意味フィルタなのですが、もう少し詳しく教えていただけますでしょうか。 VBAもマクロ処理も可能です。

  • SI299792
  • ベストアンサー率47% (772/1616)
回答No.2

「選択したEXCELブックを」 ということは、ダイアログボックスを開いてエクセルファイルを選択して、全てのシートを印刷ということでしょうか。 であれば、このマクロです。 前回同様、印刷したくないシートは、印刷範囲をクリアして下さい。 ' Option Explicit ' Sub Macro1() '   Dim Files As Variant   Dim File As Variant   Dim Sheet As Worksheet '   Files = Application.GetOpenFilename("Microsoft Excelブック,*.xls*", _     MultiSelect:=True) '   If VarType(Files) = vbBoolean Then     End   End If '   For Each File In Files     Workbooks.Open File, ReadOnly:=True '     For Each Sheet In Worksheets '       If Sheet.PageSetup.PrintArea > "" Then         Sheet.PrintOut       End If     Next Sheet     ActiveWorkbook.Close False   Next File End Sub

ann_k
質問者

お礼

回答ありがとうございます。 確認したところ、印刷処理ですね。 申し訳ありませんが、 私が知りたいのは印刷処理ではなく、印刷処理に対する設定です。 説明がわかりにくくてすいません。

ann_k
質問者

補足

昨日書いた内容だと手順がわからないですね。 申し訳ない。 ツール上でExcelファイルを選択すると 通常のExcel画面が起動します。 そこで入力作業を行い、Excelを終了すると ツールの機能で、事後処理&全ページ印刷の処理が走る。 という具合です。 何度か繰り返し処理を行うこともあります。 よろしくお願いします。

  • SI299792
  • ベストアンサー率47% (772/1616)
回答No.1

そのツールがどんなものか判らないので、判りません。 マクロ可能なら、以下のマクロでどうでしょうか。 印刷範囲を設定してあるシートだけ印刷します。 印刷したくないシートは、印刷範囲をクリアして下さい。 ' Option Explicit ' Sub PrintOut() '   Dim Sheet As Worksheet '   For Each Sheet In Sheets '     If Sheet.PageSetup.PrintArea > "" Then       Sheet.PrintOut     End If   Next Sheet End Sub

関連するQ&A

専門家に質問してみよう