[[20161213124035]] 『同一シート内に3種類の印刷タイトル行を設定した』(棟田) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『同一シート内に3種類の印刷タイトル行を設定したい』(棟田)

教えてもらいたい事項があります。
同一シート内に異なる3種類の印刷タイトル行を設定したいと考えておりますが、可能でしょうか?

例えば、1〜80行目のデータのタイトル行、81〜120行目のデータのタイトル行、121〜180行目のデータのタイトル行という具合にです。
あえて、シート分けせずに同一シートで3種類のデータをつくりたいと考えています。

良きお知恵をお願いします。

< 使用 Excel:Excel2013、使用 OS:Windows7 >


不可能であれば、1〜80行目のデータのみタイトル行を設定することはできますでしょうか?
例えば、3つのデータに印刷設定をしていて、1〜80行目のデータが2ページにわたるため、これに印刷タイトル行を設定し、81〜120行目のデータと121〜180行目のデータには印刷タイトルの設定をしないというものです。
一括で印刷する場合、総ページは4ページになりますが、最初の1と2ページのみ印刷タイトルを設定。3と4ページには設定せず、そのままを印刷したいというものです。
よろしくお願い申し上げます。
(棟田) 2016/12/13(火) 12:54

ページが変わっても同じ表示をするのがタイトル行なのであり、3種有るなら3つのシートにするか、タイトル行のような普通の行を用意するのではないでしょうか。

または、1グループ印刷する毎にタイトル行の文字列を変えて…、とかマクロで実現しようとするならば、印刷したくない行を非表示にしておいて1回印刷。 非表示行を切り替えて、タイトル行の文字列も変えて、2回目印刷、3回目印刷とするとか。
(???) 2016/12/13(火) 12:57


具体的にマクロを書くと、こんな感じ。
まず、1〜2行目をページレイアウトでタイトル行に設定してあるものとします。
PrintPreviewメソッドは、本番ではPrintOutメソッドに変えてください。

 Sub test()
    Range("A1") = "タイトル1"
    Rows.Hidden = False
    Rows("83:182").Hidden = True
    PrintPreview

    Range("A1") = "タイトル2"
    Rows.Hidden = False
    Rows("3:82").Hidden = True
    Rows("123:182").Hidden = True
    PrintPreview

    Range("A1") = "タイトル3"
    Rows.Hidden = False
    Rows("3:122").Hidden = True
    PrintPreview

    Rows.Hidden = False
 End Sub
(???) 2016/12/13(火) 13:13

ありがとうございます。
例えば、タイトル行を2ページにのみ適用することは可能でしょうか?
(棟田) 2016/12/13(火) 13:23

全部のページで共通したヘッダ部がタイトル行なのであり、1ページ目はタイトルなしで2ページ目はタイトルあり、っていうのは、それはタイトル行じゃないでしょう。タイトル行設定せず、普通にデータ中にタイトル行のような行を作って下さい。
(???) 2016/12/13(火) 13:32

Sub main() 'ご参考:ヘッダーをタイトルとみなす例
    Dim ctr As Long, i As Long, p As Long
    ctr = ExecuteExcel4Macro("COLUMNS(GET.DOCUMENT(64))")
    p = 1
    For i = 1 To ctr
        ActiveSheet.PageSetup.CenterHeader = "この" & i & "ページ目は" & p & "行目" & "から始まります。"
        ActiveSheet.PrintOut From:=i, To:=i
        p = ExecuteExcel4Macro("INDEX(GET.DOCUMENT(64),1," & i & ")")
    Next i
End Sub
(mm) 2016/12/14(水) 13:18

mmさん、ありがとうございます。
これは、私の希望である2ページ目に印刷行を適用し、3ページ目以降には設定しないというマクロになりますか?
早速、やってみましたが、すべてのページに適用されてしまいます。
今一度、よろしくお願いします。
(棟田) 2016/12/14(水) 19:18

すみません。
改めて自分の最初の要望を見返してみると、少し自分の本意と異なることがわかりました。

私の思いとしては、同一シートに3種類の表があって、1番目の表に印刷行を設定します。
1番目の表は2ページにわたるため、設定した印刷行を適用して、2番目と3番目の表には適用させないという形にできないだろうかというものです。ちなみに、2番目と3番目の表は2ページにはわたらず、1ページのみです。
よくよく、自分の質問をみていると本意と異なることが分かりました。
今一度、良きお知恵を頂ければと思います。
(棟田) 2016/12/14(水) 19:28


印刷タイトル行を2ページ目のみに設定することは、やはり難しいでしょうか?
度々のお尋ねですみません。よろしくお願いします。
(棟田) 2016/12/15(木) 17:43

ほんのちょっとだけご自分で工夫するだけだと思いますが
Sub main()
    Dim ctr As Long, i As Long, p As Long
    ctr = ExecuteExcel4Macro("COLUMNS(GET.DOCUMENT(64))")
    For i = 1 To ctr
        If i = 2 Then
            ActiveSheet.PageSetup.CenterHeader = "2ページ目のタイトル"
        Else
            ActiveSheet.PageSetup.CenterHeader = ""
        End If
       ActiveSheet.PrintOut From:=i, To:=i
    Next i
End Sub
(mm) 2016/12/15(木) 18:33

 すでに回答がある通り、一度の印刷命令では不可能です。
 まず、タイトル行を設定して1ページ目〜2ページ目を印刷、続けてタイトル行設定をなくして
 3ページ目以降を印刷することになります。

 なお、タイトル行を設定したり解除したりしますので、少なくとも2ページ目の終わり以降、
 適切なところでのページ替え設定はしておいてください。

 Sub Sample()
    'タイトル行設定
    ActiveSheet.PageSetup.PrintTitleRows = "$1:$1"
    ActiveSheet.PrintOut From:=1, To:=2
    'タイトル行設定解除
    ActiveSheet.PageSetup.PrintTitleRows = ""
    ActiveSheet.PrintOut From:=3, To:=32766
 End Sub

 ★タイトル行 という説明だったので行タイトルにしています。 ヘッダーという意味なら、すててください。

(β) 2016/12/15(木) 18:49


うまく動いてくれません。
なぜだろう。。。
(棟田) 2016/12/16(金) 07:12

 >>うまく動いてくれません。 

 mm さんのコードですか? βのコードですか?

 で、うまく動かないというのは、具体的には、どのようになってしまうということですか?

(β) 2016/12/16(金) 07:46


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.