老親介護に悩む30~60代の方へ
老親介護ねっと[老人ホーム編]
トップ 老人ホームの選び方 介護関連ニュース 新規オープンホーム情報 老人ホーム取材レポート お問い合わせ リンク集 Q&A

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

回答受付中の質問

非表示ページが印刷スキップされず困っています再掲

2018年7月28日に投稿した質問
『非表示ページが印刷スキップされず困っています。』に
画像を追加したい関係で新たに掲載させて頂いたものです。

EXCEl2013にて新規作成で以下の設定でしています。
MSPゴシック
フォントサイズ 11
列幅 8.38
行の高さ 13.5

用紙設定はA4縦、縮小なし

セルA1:C10、E1:G10、i1:K10のセル全てにデーターが入っていると仮定します。
(掲載画像はダミーデーターとして数字を入れています。)

ページ設定を以下のように3ページ指定します。
(D、H列は印刷範囲には含みません。)
1ページ目 A1:C10
2ページ目 E1:G10
3ページ目 i1:K10

2ページ目を印刷したくない場合
2ページ目 E列~G列を非表示にします。

ところが印刷プレビューでは2ページ目が空白ページで表示されます。
(D、H列を非表示にしても同様の症状が出ています。)


非表示の操作が面倒なので物は試しにグループ化を使用してみた所
同じような症状が出て困っています。


目的としては上記の3ページ分設定された原本シートを作成して
使用する書類に応じてシートを複製して書類(シート)ごとに
グループ化もしくは非表示でページ数を設定したいのです。

(使用するのが職場なのであまり詳しく書けない事をご了承願います。
実際は10ページほどありますが簡略化のために上記のように書いています。)


当方としてはグループ化もしくは手動で非表示切り替えをして
印刷時に2ページ目をスキップするようにしたいところです。

グループ化で無理なら手動で非表示の切り替えでも結構です。

最終的にどうしょうもなければページ設定を
その都度手動で切り替えるしかないと思っています。

マクロもありですができたら使用したくないのが本音です。
何しろデバッグが結構面倒ですから。
都合よく時間が空くとは限らないので・・・
(マクロのスキルですがマクロの自動記録を実施後、簡単な編集ができる程度です。
対話型マクロはお手上げですw)
なお職場のPCデーターの持ち帰りは残念ながら禁止です。


当方としては必要に応じて印刷ページを切り替えたいので
以下の方法は考えていません。

ページ設定で2ページ目の指定を印刷範囲から除去
E~G列のデーター消去もしくは列の削除

長文になりましたが一読頂きありがとうございます。
それではよろしくお願いします。

投稿日時 - 2018-08-12 22:30:03

QNo.9527003

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

原因は見つかりませんね
この追及は諦めて、1から始めましょう。

1.1頁と3頁のコピーを式でAA列~AF列に作成
 AA1=If(A1="","",A1)、この式をAA1~AC11へコピペ
 AD1=If(E1="","",E1)、この式をAD1~AF11へコピペ
この結果を添付します。
やりたいことからずれているかもしれませんが、何かヒントを掴んで頂けるかと
ここからマクロになりますが、マクロを小分けして作成し、マクロを連結して、この連結マクロを起動するボタンを作成します
2.小分けマクロの作成
2-1.初期化マクロ
 全ての改頁の除去、全てのセルを再表示に、AA列~AF列を非表示に。
  【開発リボン】⇒【マクロの記録】⇒【マクロ名を初期化と入力】
  ⇒【OK】⇒【A列名からAF名迄ドラッグでアクティブにする】
  ⇒【右クリック】⇒【再表示】⇒【ページレイアウトリボン】
  ⇒【改ページツール】⇒【全ての改ページを解除する】
  ⇒【AA列名からAF名迄ドラッグ】⇒【右クリック】⇒【非表示】
  ⇒【開発リボン】⇒【記録終了】
 以上で初期化マクロは完成です。
  初期化マクロの編集画面の 'の右側はメモ書きで、
  動作には影響ありませんこれらの行と空白行は削除します
2-2.非表示マクロ
  【開発リボン】⇒【マクロの記録】⇒【マクロ名枠に「非表示」と入力】
  ⇒【列名ZからAGまでドラッグ】⇒【右クリック】⇒【再表示】
  ⇒【列名D】⇒【Ctrl+列名H】⇒【Ctrl+列名L】⇒【Shift+列名Z】
  ⇒【右クリック】⇒【非表示】⇒【開発リボン】⇒【記録終了】
2-3.改ページマクロ
  【開発リボン】⇒【マクロの記録】⇒【マクロ名枠に「改ページ」と入力】
  ⇒【列名E】⇒【ページレイアウトリボン】⇒【改ページ】⇒【改ページの挿入】
  ⇒【列名H】⇒【改ページ】⇒【改ページの挿入】
  ⇒【列名AA】⇒【改ページ】⇒【改ページの挿入】
  ⇒【開発リボン】⇒【記録終了】
2-4.印刷マクロ
  【開発リボン】⇒【マクロの記録】⇒【マクロ名枠に「印刷」と入力】
  ⇒【セルA1】⇒【Shift+セルAF11】⇒【印刷範囲】⇒【印刷範囲の設定】
  ⇒【ファイルリボン】⇒【印刷】⇒【印刷】
  ⇒【開発リボン】⇒【記録終了】
3.マクロ連結
 マクロの実体はVBAです。
 マクロの記録とは、エクセルの操作をVBAに記録することです。
 VBAは マクロとおなじく
  SUB プログラム名() で始まり
  END SUB で終わります。

 ここではBVAで各マクロを連結します。
  ⇒【開発リボン】⇒【Visual Basiku】
-----------------------------
Sub レポート()
初期化
非表示
改頁
印刷
初期化 '之は印刷した後出来るだけ元の画面にするため
End Sub
-------------------------------
4.レポートを起動するボタン作成
 【開発リボン】⇒【開発リボン内の挿入】
 ⇒【フォームコントロール内の左上隅のボタン】
 ⇒【任意の場所で斜めにドラッグ】⇒【リストからレポートをクリック】
 ⇒【ボタン1を「レポート」と書き換え】
 このボタンボックスはマウスカーソルから外れると
 ・動作可能
 ・印刷されない
 ・右クリックで、プロパティーが起動し
  オートシェイプのような編集が可能です。

投稿日時 - 2018-08-15 13:26:23

ANo.4

私の先ほどの説明では伝わらないかもしれないので
補足します。

>印刷範囲は、
>Print_Areaという名前で定義(記憶)され
>設定次第では、
>=Sheet1!$A$1:$C$10,Sheet1!$E$1:$G$10,Sheet1!$I$1:$K$10
>といったように、
> 複数の離れ小島を1つの印刷範囲として定義できます。
>この場合、小島ごとに改ページされます。
> 質問者さんもこのような定義をしてものと思います。

これは、
A1:C10をハイライトし、
Ctrlキーを押しながらE1:G10をハイライトし、
Ctrlキーを押しながらI1:K10をハイライトする。
その後、ページレイアウト、印刷範囲の設定をするいうことです。

つまり、回避策は、↑の操作ではなく、
A1:K10をハイライトし、
ページレイアウト、印刷範囲の設定をするいうことです。
また、改ページプレビューで表示される破線を移動せず
(実線に変えず)
セル幅や余白の設定、余白用列挿入など、やり繰りして
添付画像のようにするということです。

投稿日時 - 2018-08-14 07:58:14

ANo.3

今晩は
なるほどポツンですね
このような現象は体験がありません
しかし、D列、H列はどうして非表示でなく塗りつぶしですか?
添付の2段目D列とH列の間(2ページ目)の境界が少し幅がありそうですが
ここは、非表示ですよね
HohoPapa 様が何かをご存知のようですね
添付はセルに列名を入力したものです。
これで如何ですか

投稿日時 - 2018-08-13 21:12:46

ANo.2

列を非表示にして、印刷してみると、その列は印刷されなかった。(エクセルで有名な事項です)すなわち
質問者の言う内容の再現ができなかった。何か特殊な原因があると思うが、推測できない。
ーー
普通は印刷シートを別に作って、そこへ必要なデータを移し、データを移したシートを印刷する考えを用いるものと思う。コピー貼り付けで移すのは不可。
ーー
#1回答にも述べられている、VBAでは、
1例で
Sub test01()
Set sh1 = Worksheets("Sheet1")
Set ps1 = Worksheets("Sheet2")
Set ps2 = Worksheets("Sheet3")
Set ps3 = Worksheets("Sheet4")
'--
ps1.Range("A1:c10").Value = sh1.Range("A1:C10").Value
ps2.Range("A1:c10").Value = sh1.Range("E1:G10").Value
ps3.Range("A1:c10").Value = sh1.Range("I1:K10").Value
ps1.PrintOut
ps3.PrintOut
End Sub
'ps2は印刷しないように省いた
のように、コードは、平凡な、「セル範囲の書き連ね」でできる。
(わざと単純な仕方にした。)
ーー
私なら、むしろps1-ps3の3シートを使わず
ps1を印刷シートにして、
(1)ps1に印刷データを持ってきて
(2)ps1を印刷
(3)ps1の印刷範囲をクリア
(4)(1)-(3)の処理を繰り返す。
でやる。
印刷シートでの表示形式の設定なども、現シートとは無関係に、できてよい。
ーー
また、前のOKWAVEでの質問の番号なりを、参考に載せて質問するものだと思うが。

投稿日時 - 2018-08-13 17:48:04

ANo.1

◇前置き1 印刷範囲

印刷範囲は、
Print_Areaという名前で定義(記憶)され
設定次第では、
=Sheet1!$A$1:$C$10,Sheet1!$E$1:$G$10,Sheet1!$I$1:$K$10
といったように、
複数の離れ小島を1つの印刷範囲として定義できます。
この場合、小島ごとに改ページされます。
質問者さんもこのような定義をしてものと思います。


◇前置き2 改ページ場所

1つのシートを複数ページに分けて印刷する場合
改ページプレビューを開き
青色の破線で表示される(改ページ箇所を示す)線を
D&Dを使い移動することができ、
移動すると破線が実線に変わります。


◇質問された課題について

操作してみる限り、
どうやら、前置き1,2の一方でも行われると
非表示とした列(または行)のページも印刷対象と判断し、
結果的に空白のページが印刷されるようです。
また、Excelは、改ページ場所を、
利用者が明示的に指定したと受け取っているものと思います。

むしろそうしないと、(ページ番号が欠番になるなど)、
中には、都合の悪い利用者が出てくるだろうと思います。


◇解決するには

シート上の列幅やページ設定の(左右の)余白幅をやりくりし
前置き1,2を使わないように設定することで
期待の動作を実現できるだろうと思います。
(改ページ位置をExcelが動的に判断するので
 期待の動きになるんだろうと思います。)
なお、ページごとの列幅やデザイン次第では、
このやりくりに苦戦を強いられるかもしれません。


◇私だったら

質問者さんにいろいろな事情があるものとは思いますが
私だったら、1ページ/1シート とするか、
ページごとに印刷する/しないのチェックボックスを配置し
VBAで必要な印刷範囲の定義と印刷指示を繰り返します。

投稿日時 - 2018-08-13 10:10:26