人に聞けない痔の悩み、これでスッキリ >>

Excelで1ページに同じ表を2つ作成し、それぞれに連番を振って印刷した後に切り離して利用したいと考えています。
連番の位置の都合上、ヘッダーやフッターの機能では対応できません。

例えば、表1、表2を1ページに作成し、表1内のセルA1に「1」、表2内のセルA10に「2」と入力し、10部印刷したとします。
1部目は表1のA1の場所に「1」、表2のA10の場所に「2」と印刷され、2部目は表1に「3」、表2に「4」と印刷される、といった具合で、10部目は表1に「9」、表2に「10」となります。
また、A1に「5」、A10に「6」と入力した状態で印刷した場合は、1部目は表1に「5」、表2に「6」、2部目は表1に「7」、表2に「8」となりようにしたいです。

解決策を検索すると、マクロを開いて印刷部数を直接記述する方法がありますが、その作業ができない人も印刷するため、単純に表1、表2にスタート時の番号を入れておけば、後は印刷した部数分、自動で番号が1ずつ増えていくようにしたいです。
ボタンを設置してマクロを実行する形は問題ないと思います。

環境はExcel2010、Windows7です。
説明がややこしくなりましてすみません。
どなたかご教示のほど、よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

No.1です。



補足の
>A1セルに「=E1」として試したところ、印刷は上手くいくのですが、
>その後A1セルの式が最後に印刷された数値に置き換わってしまうため、
>2回目から上手くいかない状況です。

についてですが、最終的に印刷終了時には最初の状態になればよい!というコトでしょうかね?

前回のコードではA1・A10セルは数式ではなく値そのものが入るようにしていましたので、
最後の行でA1セルの数値を印刷終了時の段階にするよういしていました。

一案ですが、
A10セルは操作せずに単に
=IF(A1="","",A1+1)
という数式を入れておき、
A1セルには
=IF(E1="","",E1)
という数式を入れておいて、↓のコードに変更してみてください。
(マクロ実行時、A1セルの数式は消えて「値」になりますが、最後にもう一度数式に戻してみました)

Private Sub CommandButton1_Click()
'A1セルはE1セルを参照の場合

Dim k As Long, cnt As Long
If Range("A1") <> "" Then
k = Application.InputBox("印刷部数を入力してください。")
Do Until cnt = k
cnt = cnt + 1
ActiveSheet.PrintOut
Range("A1") = Range("A10") + 1
Loop
Range("A1").Formula = "=IF(E1="""","""",E1)"
Else
MsgBox "E1セルに入力してください。", vbOKOnly
Range("E1").Select
Exit Sub
End If
End Sub
    • good
    • 0

こんにちは!



Sheetにコマンドボタンを配置し、それをクリックするとマクロ実行ではどうでしょうか?
A10セルは必ずA1セルの次番号だという前提での一例です。

開発 → 挿入 → ActiveXコントロールのコマンドボタンを挿入 → 挿入したコマンドボタン上でダブルクリック
→ VBA画面に↓のコードをコピー&ペースト → ExcelSheetに戻り デザインモードを解除
あとは普通にコマンドボタンをクリックしてみてください。

Private Sub CommandButton1_Click() 'この行から
Dim k As Long, cnt As Long
If Range("A1") <> "" Then
k = Application.InputBox("印刷部数を入力してください。")
Do Until cnt = k
cnt = cnt + 1
Range("A10") = Range("A1") + 1
ActiveSheet.PrintOut
Range("A1") = Range("A10") + 1
Loop
Range("A1") = Range("A1") - 2
Else
MsgBox "A1セルに数値を入力してください。", vbOKOnly
Range("A1").Select
Exit Sub
End If
End Sub 'この行まで

※ このままではコマンドボタンも一緒に印刷されます。
コマンドボタンを印刷したくない場合は「デザインモード」をクリック → コマンドボタン上で右クリック
→ コントロールの書式設定 → 「プロパティ」タブ → 「オブジェクトを印刷する」のチェックを外します。

こんな感じではどうでしょうか?m(_ _)m

この回答への補足

早々にありがとうございます!

さっそく実行してみたところ、まさに要求通りの動作をしました!
大変助かりました!

追加で恐縮なのですが、現在A1セルに入力する形をとっていますが、たとえばE1セルに数値を入力するようにして、その数値がA1セルに反映されるようにすることは可能でしょうか?
A1セルに「=E1」として試したところ、印刷は上手くいくのですが、その後A1セルの式が最後に印刷された数値に置き換わってしまうため、2回目から上手くいかない状況です。

よろしくお願いします。

補足日時:2013/01/19 16:48
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルの表を複数枚印刷したときに連番をつけたい

エクセルの1枚の表を100枚印刷し、その表のシート内(AW3)に連番を打ちたいのですが、なにか簡単な方法はありますか?
今までは印刷を100枚して、ナンバーリング(ハンコ)で連番を打っていましたが、ちょっと面倒なんです。
マクロを使ったことのない初心者ですが、何かよい方法はありませんか?よろしくお願いいたします。

Aベストアンサー

#02です。
開始番号、終了番号を指定する場合はこんなマクロです。
ただし開始、終了ともに正の数でないと印刷は行いません。

Sub NumberPrint()
Dim idx As Integer
Dim frmPage, toPage
 frmPage = Application.InputBox("連番を挿入して印刷します" & Chr(13) _
     & "開始番号を入力してください", Type:=1)
 toPage = Application.InputBox("終了番号を入力してください", Type:=1)
 If frmPage > 0 And toPage >= frmPage Then
  For idx = frmPage To toPage
   Range("AW3").Value = idx
   ActiveSheet.PrintOut
  Next idx
 Else
  MsgBox "開始番号、終了番号が不適切です。印刷は行いません"
 End If
End Sub

#02です。
開始番号、終了番号を指定する場合はこんなマクロです。
ただし開始、終了ともに正の数でないと印刷は行いません。

Sub NumberPrint()
Dim idx As Integer
Dim frmPage, toPage
 frmPage = Application.InputBox("連番を挿入して印刷します" & Chr(13) _
     & "開始番号を入力してください", Type:=1)
 toPage = Application.InputBox("終了番号を入力してください", Type:=1)
 If frmPage > 0 And toPage >= frmPage Then
  For idx = frmPage To toPage
   Range("AW3...続きを読む

Qエクセル連番自動印刷について

マクロについてお尋ねいたします。

エクセルから印刷時に連番を自動的に印刷できるようにしたいと思いマクロを組みましたが
指定のセル(画像参照)に1を入力後、マクロを実行し印刷が始まり連番1番から50番までは自動的に印刷することに成功いたしました。
そのときに実行したモジュールの内容は下記のとおりです。
次に51番から100番まで印刷できるようにしたいと思い、
エクセルのセル内に51を入力し、モジュールの内容を書き換えマクロを実行してみましたが印刷に失敗いたしました。

Sub 印刷()

Dim no As Integer

Sheet1.Cells(3, 8) = &quot;&quot;
no = 1 ←ここを51書き換える

Do Until no &gt; 50
Sheet1.Cells(3, 8) = no
Sheet1.PrintOut
no = no + 1
Loop


End Sub

どのようにしたら51番から100番まで印刷できるかご教授いただけませんか
よろしくお願い致します。

マクロについてお尋ねいたします。

エクセルから印刷時に連番を自動的に印刷できるようにしたいと思いマクロを組みましたが
指定のセル(画像参照)に1を入力後、マクロを実行し印刷が始まり連番1番から50番までは自動的に印刷することに成功いたしました。
そのときに実行したモジュールの内容は下記のとおりです。
次に51番から100番まで印刷できるようにしたいと思い、
エクセルのセル内に51を入力し、モジュールの内容を書き換えマクロを実行してみましたが印刷に失敗いたしました。

Sub 印刷()

...続きを読む

Aベストアンサー

こんにちは!
>指定のセル(画像参照)に1を入力後・・・
とありますので、H3セルに「1」を入力し、マクロを実行されているのですよね?

それを「51」からというコトですので、H3セルに「51」を入力 → マクロ実行とすると

Sub Sample1()
Dim cnt As Long
Do Until cnt = 50 '//50まで
cnt = cnt + 1
Worksheets("Sheet1").PrintOut
With Range("H3")
.Value = .Value + 1
End With
Loop
End Sub

ではどうでしょうか?m(_ _)m

QEXCELでNo.を変えて印刷したい

EXCEL2000でページ数は1枚なのですが、500枚同じものを印刷するときに右上にNo.0001~0500までのNo.つけて一枚づつ印刷するにはどうしたらいいのでしょうか?

Aベストアンサー

エクセル自体にその機能は無いと思います。
VBAを使えば実現できます。
1.ワークシートにコマンドボタンを一つ配置します。
2.コマンドボタンを右クリック→プロパティ
3.プロパティウィンドウのPrintObjectをFalseにします。
4.コマンドボタンをダブルクリックします。→VBAの画面が開く
5.Private Sub CommandButton1_Click()とEnd Subの間に以下のように入力します。

Dim i As Integer
For i = 1 To 500
Range("A1").Cells = "No." & Format(i, "0000")
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
DoEvents
Next i

6.3行目のRange("A1").Cellsという部分のA1はページ番号を書きたいセルを指定して下さい。
 また、2行目のFor i = 1 To 500はNo.1~500までという意味なので好きな数字に置き換えて下さい。
7.間違いなく入力できたらVBAの閉じるボタンを押して閉じます。
8.エクセルの画面にあるコントロールツールボックスにある緑の三角定規を押して、押して押されていない状態にします。
9.コマンドボタンを押します。

注意:通常使うプリンタに設定されている物に連続して出力します。
途中で止められませんので、最初は試しで少しづつやって下さい。

エクセル自体にその機能は無いと思います。
VBAを使えば実現できます。
1.ワークシートにコマンドボタンを一つ配置します。
2.コマンドボタンを右クリック→プロパティ
3.プロパティウィンドウのPrintObjectをFalseにします。
4.コマンドボタンをダブルクリックします。→VBAの画面が開く
5.Private Sub CommandButton1_Click()とEnd Subの間に以下のように入力します。

Dim i As Integer
For i = 1 To 500
Range("A1").Cells = "No." & Format(i, "0000")
ActiveWindow.SelectedSheets.P...続きを読む

Qエクセル印刷時 一枚の書類に印刷枚数分の連続番号を振るには?

質問が既出していましたら申し訳ありません。

総枚数一枚のエクセルのシートを百枚印刷するとして、 
シート一枚ずつに連続番号(できたら右下)を印刷時にふることは可能でしょうか。印刷枚数分番号(この場合1~100)を振るにはどうしたらいいのでしょうか。
ご返答お待ちしております。

Aベストアンサー

1シート1ページの場合に、ページ番号が出れば宜しいのでしょうか?

(1)「すべてのシートを選択」状態にして、メニューから「ファイル」-「ページ設定」を選択して、ページ設定画面を表示します。

(2)ページ設定画面の「ヘッダー/フッター」タブで、「フッターの編集」ボタンを押します。

(3)「右側」と表示されているテキストボックス内をクリックした後、左から2番目のボタン(#が表示されている)を押すと、テキストボックスに”&[ページ番号]”が表示されます。

(4)ページ設定画面の「OK」ボタンを押して設定を終了します(ページ番号の印刷が設定されます)。

(5)印刷する時に、「印刷対象」に”ブック全体”を選択して印刷します。

Q数字をカウントしながらエクセル印刷したい

エクセルの印刷するたびに、そのシートのセル内の数字を1つづつ増やしながら、希望の数値まで印刷させる方法はあるのでしょうか?
要するにエクセルで差込印刷がしたいのです。印刷ごとに数値が増えれば、VLOOKUP関数などでセルの文字や数値が変えられると思うのです。印刷ごとにセルの数値を増やす方法を教えてください

Aベストアンサー

マクロを使えば可能です。

(1)必要な件数だけ一気にカウント・印刷する方法
【セルA1でカウントさせ、1~20まで実行】
Sub 連続印刷()
Dim i As Integer
  For i = 1 To 20
    Sheets(1).Range("A1").Value = i
    ActiveSheet.PrintOut
  Next
End Sub

(2)手動で印刷していき、セルにカウントさせる方法
【VBEのThisWorkbook内に記入】
Private Sub Workbook_BeforePrint(Cancel As Boolean)
  C_P = Sheets(1).Range("A1").Value
  C_P = C_P + 1
  Sheets(1).Range("A1").Value = C_P
End Sub
※こちらの場合、印刷のタイミングでカウントされるので初期値は 0 にしてください

Q差込み印刷について(連続した数字を入れる)

チケットを管理表を作成しております。
ワードにチケット管理表を12枚印刷できるように作りました。
1枚につき、2ヶ所チケット番号を印刷する場所があります。
番号は、00001~05000まで印刷させたいと思ってます。
連続した数字を差込み印刷できる方法はありますでしょうか?
急いでおります。宜しくお願いします。

Aベストアンサー

Wordのチケットに、Excelで作成した番号を差し込み印刷する方法がよいと思います。以下はその操作例です。

1) Excelの「Sheet1」のセルA1に「番号」と入力し、セルの書式を文字列にして、セルA2以下に00001~05000を入力します。
2) 「ファイル」→「名前を付けて保存」で分かりやすい名前を付けて保存します。

3) チケットのWord文書を開いて、「表示」→「ツールバー」→「差し込み印刷」で、ツールバーを表示します。
4) 「差し込み印刷」ツールバーの「メイン文書の設定」ボタンを押して「標準のWord文書」をオンにして「OK」を押します。

5) 「差し込み印刷」ツールバーの「データソースを開く」ボタンを押して、先に保存したExcelファイルを指定して「開く」を押し、表示される「表の選択」で「Sheet1」が選択されていることを確認して「OK」を押します。
6) チケットの番号を表示する先頭の位置にカーソルを移動しいて、「差し込み印刷」ツールバーの「差し込み印刷フィールドの挿入」ボタンを押して、「番号」をクリックして「挿入」を押し、「閉じる」をおします。<<番号>>のように表示されます。

7) 続いて、「Wordフィールドの挿入」を押して、「Next Record(次のレコード)をクリックします。<<Next Record>>が挿入されます。
8) <<番号>><<Next Record>>を選択して、「コピー」操作し、2番目の番号の位置に貼り付けします。

9) 続いて、3番目の番号の位置にカーソルを移動し、「F4」キー(「繰り返し」のショートカットキー)を押して貼り付けます。以下、すべての番号の位置に貼り付けます。
10) 「差し込み印刷」ツールバーの「差し込んだデータの表示」ボタンを押すと、Excelの番号が表示されます。レイアウトに問題があれば、編集します。

11) 「差し込み印刷」ツールバーの「プリンタに差し込み」ボタンを押して、「すべて」がオンになっていることを確認して「OK」を押すと「印刷」ダイアログが表示されますので、「OK」を押すと印刷が開始されます。

なお、「プリンタに差し込み」の代わりに「新規文書に差し込み」ボタンを押すと、すべてのレコードが差し込まれた文書が表示されますので、すべてのレコードを確認することができます。新規文書に差し込んだ場合は、普通の印刷手順で印刷を行います。

お試し下さい。

「Word(ワード)講座 応用編:文書中への差し込み印刷」
http://www.eurus.dti.ne.jp/~yoneyama/Word/ouyou/w-sosi2.html

Wordのチケットに、Excelで作成した番号を差し込み印刷する方法がよいと思います。以下はその操作例です。

1) Excelの「Sheet1」のセルA1に「番号」と入力し、セルの書式を文字列にして、セルA2以下に00001~05000を入力します。
2) 「ファイル」→「名前を付けて保存」で分かりやすい名前を付けて保存します。

3) チケットのWord文書を開いて、「表示」→「ツールバー」→「差し込み印刷」で、ツールバーを表示します。
4) 「差し込み印刷」ツールバーの「メイン文書の設定」ボタンを押して「標準のWord文書...続きを読む

Qexcelからexcelへの差し込み印刷

お世話になります。

excelでwordへの差し込み印刷をよく利用するのですが、
同様に、
excelのデータをexcelに流し込んで印刷する方法はありますでしょうか。

excelの名簿のデータを
excelの表のフォーマットに流し込んで
1人づつ印刷したいのですが。

お分かりの方いらっしゃいました教えてください。
どうぞ宜しくお願い致します。

Aベストアンサー

イメージはわかるが、エクセルに差込印刷の機能はありません。
ワードなどと違ってA.X氏1人分書類シート作成、B印刷、Aのシートををy氏分のデータでシート内容(セル)を置き換え、印刷、の繰り返しをします。
ーー
例データ Sheet1 A1;D3
連番氏名住所品物
1山田 三郎東京都江東区かばん
2植田 健横浜市港北区帽子
A列はこのたび連番を振りました。
Sheet2   に送り状の書式を体裁よく作ります。
H1セル(どこでも良いが、下記のVLOOKUPの式は変わる)

送り状

住所X
氏名Y

品物Z

上記の品をお送り申し上げます。
ご査収ください

以上
Xの場所のセルに =VLOOKUP($H$1,Sheet1!$A$1:$D$3,2,FALSE)
Yの場所のセルに =VLOOKUP($H$1,Sheet1!$A$1:$D$3,3,FALSE)
Zの場所のセルに =VLOOKUP($H$1,Sheet1!$A$1:$D$3,4,FALSE)

---
結果

送り状

住所山田 三郎
氏名東京都江東区

品物かばん

上記の品をお送り申し上げます。
ご査収ください

以上
ここで
VBE画面で標準モジュールに
Sub test01()
For i = 1 To 2 '人数分
Range("H1") = i
Range("A1:G20").PrintOut '印刷範囲は各人同じとする
Next i
End Sub
を張り付け、実行する。
山田、植田分の紙が2枚印刷されました。
これは質問者はVBAの経験も無いでしょうと、最低限にしてあります。
VBAを勉強してください。
別ブックにある名簿を対象などは複雑になるので避けています。

イメージはわかるが、エクセルに差込印刷の機能はありません。
ワードなどと違ってA.X氏1人分書類シート作成、B印刷、Aのシートををy氏分のデータでシート内容(セル)を置き換え、印刷、の繰り返しをします。
ーー
例データ Sheet1 A1;D3
連番氏名住所品物
1山田 三郎東京都江東区かばん
2植田 健横浜市港北区帽子
A列はこのたび連番を振りました。
Sheet2   に送り状の書式を体裁よく作ります。
H1セル(どこでも良いが、下記のVLOOKUPの式は変わる)

送り状

住所X
氏名Y

品物Z

...続きを読む

Q複数シートの特定の位置に連番を振る方法??

関数もマクロもまだまだ理解できていない初心者です。
エクセルで送り状を作成していまして、毎回「原紙」のシートをコピーして必要事項を入力し
プリントアウトして使っています。
この中の項目に連番でナンバーを振る欄があり(位置は固定されています)、今現在はものすごく原始的に前のシートを確認して、ナンバーを手入力しています。
これを、原紙のシートをコピーした際に、自動でナンバーが振られるようにしたいのですが・・・
何かいい方法はありませんでしょうか??
シート名を日付で管理し、後で確認できるよう、数か月分は保存している状態です。
また、ただの送り状なので、データベース化する必要はありません。
どなたかお知恵をお貸し下さい、よろしくお願い致します。

Aベストアンサー

マクロでやって見ました。
新たなシートを作る時に以下のマクロを動かします。

テンプレートシートのコピーを行い、その際に該当セルの最大値を串刺しで計算。
その値+1を新たに追加したシートの該当セルに入れています。
コード中の連番を入れるセルや、原紙のシート名は実際の物に合わせて下さい。

Sub sample()
  Dim sTarget, sSheet, sCount

  sTarget = "A1" '連番を入れるセル
  Sheets("原紙").Copy After:=Sheets(Sheets.Count) '原紙シートをコピー
  sSheet = "'" & Sheets(1).Name & ":" & Sheets(Sheets.Count - 1).Name & "'!"

  sCount = Evaluate("=max(" & sSheet & sTarget & ")") '該当セルの最大値取得
  If IsNumeric(sCount) = False Then sCount = "0"
  Range(sTarget).Value = Int(sCount) + 1
  'シート名を 日付_シート枚数に変更
  Sheets(Sheets.Count).Name = Format(Now(), "YYYYMMDD") & "_" & Sheets.Count
End Sub

マクロでやって見ました。
新たなシートを作る時に以下のマクロを動かします。

テンプレートシートのコピーを行い、その際に該当セルの最大値を串刺しで計算。
その値+1を新たに追加したシートの該当セルに入れています。
コード中の連番を入れるセルや、原紙のシート名は実際の物に合わせて下さい。

Sub sample()
  Dim sTarget, sSheet, sCount

  sTarget = "A1" '連番を入れるセル
  Sheets("原紙").Copy After:=Sheets(Sheets.Count) '原紙シートをコピー
  sSheet = "'" & Sheets(1).Name & ":" &...続きを読む

QエクセルでA4用紙に6枚のカードを作成し それを30枚ほど印刷時にそれぞれのカードに連番を入れたいの

エクセルでA4用紙に6枚のカードを作成し
それを30枚ほど印刷時にそれぞれのカードに連番を入れたいのですが、何か方法はありますか。教えて下さい。

Aベストアンサー

>差し込み印刷で1から1000までの会員番号を印刷出来るように設定したのですが始まりのページが1から6で次のページが2から7になっています

右むき▲を押していくと、最初の1が入っている場所にデータを次々いれていく挙動になります。
(最初の場所に1が入ったら、2が入ったら、という風に進んでいく)
最初の場所に1を入れた状態(1~6まで入っている)で、完了と差し込み⇒個々のドキュメントの編集⇒●すべてを選択しOKにしてみてください。

QExcelで複数行ずつ連番をふる方法教えてください

初心者ですが、1,2,3……と縦に連番はオートコレクトでできるのですが
3行ずつ同じ数字で連番を振りたいのですがオートコレクトをしますと
少数点の付いたりして上手くいきません。
1□□2□□3□□…… であればできるのですが。(□は空白行です。)
111222333……にしますと333の次から3.5 3.8 4.1 のように0.3ずつ
増加した数字になってしまいます。希望は111222333444555666……
にしたいのです。宜しくお願い致します。

Aベストアンサー

さっき回答した者ですが、補足です。

数字の前に「No.」などがついている場合は、
残念ながら下で私が回答した方法は使えません。

しかし、次の方法で、
「No.」等の文字を表示させることはできます。

「セルの書式設定」で「ユーザー設定」を選択し、
「種類」の欄に「"No."#」と入力すれば、
「No.1」と表示することができます。

よろしければお試しください。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング