No.1ベストアンサー
- 回答日時:
以前、同様の質問に回答したことがあります。
Excelでは面倒かもしれません。『エクセルで縦長のデータを紙の無駄なく印刷』
http://www.okweb.ne.jp/kotaeru.php3?q=65628
今回は視点を変えて、手作業で行われているだろう『カット&ペースト』をマクロにしてみました。
ツール→マクロ→Visual Basic Editor でVBE画面に移り、挿入→標準モジュール で標準モジュールを挿入し、そこに下記コードを貼り付けます。
質問にあるA、B列が3個並んだカタチになります。
編集したいシートを選択してマクロを実行します。(ツール→マクロ→マクロ→下記を選択→実行)
編集したいシートのコピーを作り、実行してみてください。1ページの行数はpageModeで指定してください。
なお、1行目は表題、2行目からデータがあるとしています。2行目以降を印刷範囲の設定を行い、1行目を行タイトルに設定します。この辺りはアレンジして下さい。
『最初のデータの位置』を変更すれば、A列以外からの処理、複数タイトル行に対応できます。
Public Sub makePrintForm()
'2列を3組の2列に編集しなおすマクロ
Dim syoriKubun As Integer '処理区分
Dim cutArea As Range '移動する元のセル範囲
Dim topCell As Range '移動する元のセル範囲の左上先頭セル
Dim topCellAddress As String '移動する元のセル範囲の左上先頭セル番地
Dim cutRows As Long '移動する行数
Const pageMode = 60 '1ページの行数 *** これを指定します ***
Application.ScreenUpdating = False
'表題をコピー
Set topCell = ActiveSheet.Range("A2") '*** 最初のデータの位置を指定します ***
With topCell
.Offset(-1, 3) = .Offset(-1, 0): .Offset(-1, 4) = .Offset(-1, 1)
.Offset(-1, 6) = .Offset(-1, 0): .Offset(-1, 7) = .Offset(-1, 1)
End With
'データを分割
Set topCell = ActiveSheet.Range("A2").Offset(pageMode, 0)
If topCell.Offset(1, 0) = "" Then
cutRows = 1 'データ数が1ページの行数+1の時
ElseIf topCell.End(xlDown).Row = ActiveSheet.Rows.Count Then
Exit Sub 'データ数が1ページの行数までの場合は終了
Else
cutRows = topCell.End(xlDown).Row - pageMode - 1
End If
'データがあるだけ繰り返す
While cutRows > 0
Set cutArea = topCell.Resize(cutRows, 2)
Select Case syoriKubun 'データを移す場所の計算
Case 0, 1: Set topCell = topCell.Offset(-pageMode, 3)
Case 2: Set topCell = topCell.Offset(0, -6)
End Select
'CutするのでtopCellの番地を覚えておく
topCellAddress = topCell.Address
'データを移動
cutArea.Select: Selection.Cut 'カット
topCell.Select: ActiveSheet.Paste 'ペースト
'次の処理
syoriKubun = syoriKubun + 1: If syoriKubun > 2 Then syoriKubun = 0
Set topCell = Range(topCellAddress).Offset(pageMode, 0)
cutRows = cutRows - pageMode
Wend
Application.ScreenUpdating = True
Range("A1").Select
End Sub
参考URL:http://www.okweb.ne.jp/kotaeru.php3?q=65628
この回答へのお礼
お礼日時:2001/12/03 02:37
早速ご回答いただきありがとうございます。
おかげさまで3列づつ印刷することができました。
今までマクロを使うようなデータ処理をすることがなかったので、これから勉強しようと思っています。
どうもありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセル2013「次のページ数に合わせて印刷」が小さすぎる 9 2023/03/28 10:18
- プリンタ・スキャナー 封筒印刷 差出人印刷ずれる 4 2022/05/01 10:12
- その他(ソフトウェア) 写真の印刷レイアウトについて 13 2023/05/31 07:20
- プリンタ・スキャナー インクジェットプリンターで画用紙の厚紙は印刷しても大丈夫ですか? 6 2022/11/16 19:23
- プリンタ・スキャナー Wordで作った宛名ラベルを印刷しようと思って、プリンターの上のところにある、手差しトレイ的なところ 3 2022/11/17 18:40
- Word(ワード) Wordでの印刷サイズについて A4の原稿をB5サイズで出力したいとき、 印刷から用紙サイズの指定か 4 2022/04/30 09:51
- その他(Microsoft Office) Excelのマクロについて教えてください。 1 2022/03/25 10:03
- Excel(エクセル) エクセルでA3用紙を印刷し、余白を全て0にしてもかなりの余白が出てしまいます。その場合は拡大設定する 1 2022/11/29 01:08
- Visual Basic(VBA) エクセル365のVBAで困っています。どう修正したらよいか添削をお願いします 2 2023/05/03 17:35
- プリンタ・スキャナー テプラ(PCからプリント)で先端に余白を作りたい 2 2023/03/21 13:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで長い行を5行ごとに1...
-
【エクセル】区切り文字が含ま...
-
SUMIFS関数の計算結果が違います
-
エクセルの関数で範囲のある数...
-
テキストデータのPDFをWordで開...
-
差し込み印刷で文字列が「0」と...
-
オブジェクトブラウザでデータ...
-
COUNTIFS関数で日付データを数...
-
EXCEL2010 関数が勝手に変わる
-
エクセル 貼り付け時の文字化け
-
wordデータを、excelに自動で入...
-
斜めの貼り付け
-
エクセルでプルダウン選択され...
-
エクセルで時間の合計ができません
-
使用しているエクセルデータか...
-
エクセルで「データ」の「区切...
-
エクセルで信号解析するには
-
エクセルのマクロで他のシステ...
-
膨大なデーターの変更点のみ抽...
-
エクセルで列にあるユニークな...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで長い行を5行ごとに1...
-
【エクセル】区切り文字が含ま...
-
エクセルの関数で範囲のある数...
-
差し込み印刷で文字列が「0」と...
-
エクセルで列にあるユニークな...
-
COUNTIFS関数で日付データを数...
-
SUMIFS関数の計算結果が違います
-
テキストデータのPDFをWordで開...
-
オブジェクトブラウザでデータ...
-
0:00をカウントしない方法
-
エクセルのマクロで他のシステ...
-
エクセル 貼り付け時の文字化け
-
エクセルで時間の合計ができません
-
エクセルでプルダウン選択され...
-
斜めの貼り付け
-
wordデータを、excelに自動で入...
-
エクセルにおいて、数値が入っ...
-
膨大なデーターの変更点のみ抽...
-
DBで改行が入っているデータをE...
-
エクセルで「データ」の「区切...
おすすめ情報