• ベストアンサー

特定文字のセル(エクセルデータ)の所で改ページ印刷する仕組みは可能?

「タイトル+本文」という形でのエクセルデータ(他DBから変換したもの)があります。1タイトルが終わり、続けてそれぞれの「タイトル+本文」が50組ぐらいあり、そのまま印刷する場合は、各々長さがバラバラなので各用紙にまたがって印刷されてしまいます。改ページを手動で設定して印刷する方法もあるのですが、量が多いのと今後も別のデータを取り込んだとき再び設定する必要があるので、何とか特定文字をキーに改ページ印刷を自動化できないかと色々方法を探しています。エクセル2000を使用しています。同じような経験をお持ちの方が居られましたらお聞きしたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

(1)セルの値全体で比較すれば良い時 #2のやり方 (2)先頭から何文字目かの定位置 If Cells(i, "B") = "xx" Then -----> If Mid(Cells(i,"B"),3,2)="XX" then 3文字目から2文字がXXなら (3)セルの文字列の中のどこかに含まれているか探す時 p=InStr(Cells(i,"B"),"xx") If p=0 then (含まれない時) Else (含まれる時) End If

221EG6
質問者

お礼

Mid関数のご説明に加えて(3)の例も教えて頂きましてありがとうございました。これから(1)~(3)のパターンをケースに応じて使い分けていこうと思います。

その他の回答 (3)

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.4

#1です。 #2さんのサンプルで解決でしょうが、、、 A列内の ほげほげ を含むセルを探して改ページを挿入するサンプルマクロを書いてみました。 Sub Test() Dim r As Range, fr, fa As String  Application.ScreenUpdating = False  With ActiveSheet   Set r = .Range("A1:A" & .Range("A65536").End(xlUp).Row)   Set fr = r.Find("ほげほげ", LookAt:=xlPart)   If Not fr Is Nothing Then     fa = fr.Address     Do     If fr.Address <> "$A$1" Then .HPageBreaks.Add Before:=fr       Set fr = r.FindNext(fr)     Loop While Not fr Is Nothing And fa <> fr.Address   End If  End With End Sub ちょっとおせっかいですが、#2さんの例でxxを含むものを探す場合、 If Cells(i, "B") = "xx" Then を If Cells(i, "A") Like "*xx*" Then でも良いかと思います。

221EG6
質問者

お礼

色々なマクロがあるのだなと奥の深さを痛感するとともに参考になります。おせっかいだなんてとんでもありません、私の方も手法の引き出しが増えるので感謝です。ありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

VBAで良くやります。 下記ではB列に文字列「xx」が出てくるか、30行を越えると、そこの直前行まで1ページに印刷しています。 列はA,B列しかないサンプルになっています。 本番に合わせて変えるところは、シート名、30行、 スタート行、最右列、先頭検出文字列(xx)、その文字列のある列(本例ではB列)でしょうか。 XXはタイトルの1部であるなら、MID関数でタイトルの先頭から数文字を識別できるように切り出しましょう。 Sub test01() Worksheets("sheet1").Activate d = Range("a1").CurrentRegion.Rows.Count MsgBox d s = 1 For i = 2 To d If i > s + 30-1 Then Range(Cells(s, "A"), Cells(i - 1, "B")).PrintOut s = i - 1 Else If Cells(i, "B") = "xx" Then Range(Cells(s, "A"), Cells(i - 1, "B")).PrintOut s = i End If End If Next i Range(Cells(s, "A"), Cells(d, "B")).PrintOut End Sub 少数例(百数十行)でテスト済み。

221EG6
質問者

補足

VBの構文まで丁寧につけて頂きましてありがとうございます。列は1列のみのデータでしたので、Cellsはひとつだけにすればよいのでしょうか。Mid関数の定義の仕方がよくわからなかったので、 "*xx*" として試してみようと思います。(プリンタが職場に1台しかなくなかなか試せないのですが) imogasiさんのようにVBが記述できる人にはあこがれてしまいます。

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

行タイトルを使えるような出力に元データを変更出来ないのですね? データの合間にあるタイトルを特定出来るキーワードがあるなら、マクロで出来ると思いますが、、、

221EG6
質問者

お礼

元データからの変換で1セルの中にタイトルとページ番号が一緒に取り出されています。タイトルは固定なので、それを検索キーワードにマクロかVBAを使うとできそうですが。。マクロやVBAの作り方がわからないもので。

関連するQ&A

  • エクセル 特定のページだけ行のタイトルを印刷したくない

    エクセル2003です。 印刷タイトル-行のタイトルを設定したとき、特定のページだけその行のタイトルを印刷させないことは可能でしょうか。 具体的には、行のタイトルを設定している縦長の表があります。印刷すると数ページになりまして、その表の下に脚注(数十項目)に入れてあります。表本体と脚注は改ページして有ります。 PC画面上で見るときはウインドウを分割して表本体と脚注を同時に見ていますが、印刷すると脚注のページにも表の行タイトルが印刷されてしまいます。 VBAのお世話にならずに、脚注ページだけ行タイトルを印刷しないように設定することは可能でしょうか?

  • エクセルデータの印刷方法について

    エクセルのデータがA・B列のみに入力されており、このデータをA4縦の用紙にプリントアウトしたいのです。列幅がそんなに広くないので通常の設定だと用紙の左端の部分にしか印刷されないようになってしまい、右側は余白となってしまいます。1枚の用紙に3列(3段組?)プリントしたいのですが、どこで設定すればいいのでしょうか?カット&ペーストでやろうとすればできるのですが、行数が多いものですからこんな方法では大変です。基本的なことで申し訳ないのですが、よろしくお願いいたします。

  • エクセル2007でタイトルを全ページに印刷したい

    エクセル2000では、可能だったのですが、2007で、できないのですが お願いします。 1シートで、印刷すると10枚に及ぶデータがあるのですが、 A行のタイトルをすべてのページの最初に印刷したいのですが、 2000では、ファイル→ページ設定→シート→印刷タイトル右・・・ で、可能だったと思いうのですが、(印刷プレビューからは不可のはず) 2007でも、印刷プレビューからは不可能のようなのですが、 できる方法ご存知であれば、お願いします。

  • エクセルで1枚の用紙に2ページ印刷

    こんばんは。 エクセルで作った文書(A4サイズの半分の大きさのもの)をA4サイズの用紙に印刷をしたいのですが、1枚の用紙に2ページずつ印刷するにはどのように設定すればよいか教えてください。(全部で50ページあるので、用紙を25枚で済むようにしたいのですが) 割つけ印刷を選ぶと、原稿が縮小されすぎて、うまくできないのですが・・

  • 特定のページだけが印刷出来ない

    DCP-J963Nを使用しています。 特定のページだけが印刷出来ず困っております。 データ受信中としばらく表示された後、 印刷を中止しますとなり何度試しても特定のページだけが印刷出来ません。何か解決方法はありませんでしょうか? ※OKWAVEより補足:「ブラザー製品」についての質問です。

  • Excelの印刷について教えてください

    Excelの大きな表で、印刷タイトル(行)を設定すると、 簡単に複数の頁にタイトル行を自動で印刷出来る事が分かりました。 A3用紙やB4用紙に印刷して袋閉じにすることが多いのです。 このとき、折った時の2ページ目にも『タイトル行』を自動で印刷する術は ありますか?

  • エクセル とびとびで特定のセルを2か所印刷したい

    ビスタ/2007を使用です。 (1)エクセルで作品の中から、とびとびにあるセルをCtrlキーを押しながら2か所(複数と意味です) 選択しました。 (2)ページレイアウトタブ-ページ設定-ページ設定Gr-印刷範囲(設定する) 印刷前にプレビューを見ると1つしか表示されていません。2か所目は次ページに表示されていま す。印刷してみると2ぺーじに渡り印刷されます。同一シート内なのになぜこんなことが起きるのでし ょうか? また、解決策を教えてください。 選択は「おはようございます」と「こんばんは」 尚、関係ないとは思いますが、セルは横方向に結合は行っていません。

  • EXCELの改ページについて

    EXCELの改ページについて EXCEL2003で表を作成して印刷しようとしたのですが、改ページが上手くできず1ページ目がヘッダとフッタと本文22行が印刷されます。 2ページ目はヘッダとフッタと本文が37行印刷されます。 なぜか1ページ目には勝手に本文とヘッダとフッタの間に余白が設定されて印刷される行数が少なくなってしまいます。 これはなぜ起きるのでしょうか? 印刷範囲設定で印刷したい部分のみを設定しているはずなのですが。。。。。

  • ★エクセル(EXCEL)の印刷領域とページ設定のコピー

    マサオと申します。 エクセルのことについてですが、マクロで作成する会社のデータがあります。ただそのデータは、印刷領域とページ設定が合っていないので、作成後毎回設定しないといけません。 (1)マクロのデータベース(画面では見えない)がシート上にあるのでデータベースを含めたところまで印刷しようとするので、実際印刷するところに設定しないと行けない (2)ページ設定(用紙の向きと一枚で印刷するように設定する) そこで同じファイルに何枚もシートがあるので一枚だけ印刷領域とページ設定をすれば他のシートにコピーする方法は無いのでしょうか? 教えてください。

  • ページ番号の印刷を止めるには

    文書の1枚目が表紙、2枚目が目次、3枚目以降が本文で、その本文の部分に1、2,3...と印刷がしたくて、1、2枚目をセクションで区切って3枚目にページ番号を挿入しました。 3枚目以降の本文部分は思い通りに印刷できたのですが、1,2枚目にも各々頁番号が振られてしまいました。 1,2枚目に挿入されてしまった頁番号をキャンセルする方法を教えてください。

専門家に質問してみよう