• 締切済み

Excelアンケート用紙に学校名と通し番号を連続印刷したい

学校向けのアンケート用紙を作成しています。 学校ごとに通し番号をつけて連続印刷する方法を教えてください。 利用したいデータは次の2つです。 1) アンケート用紙(Excel) 2) 学校リスト(Excel) 1) のアンケート用紙には、 ・「学校」欄 ・「整理番号」欄 があって、そこに、学校名と学校ごとの通し番号を印字して、連続印刷したいと考えています。 2) の学校リストには以下のような項目があります。 学校名 調査人数 A学校 30 B学校 20 C学校 50  :   : このデータを利用して、A学校分のアンケート用紙には、「学校」欄にA学校の名が印字され、 「整理番号」欄には、1から30までの通し番号が印字された用紙を30枚分、 同様にB学校分は、B学校名と1から20までの通し番号を印字したものを20枚、 ・・・というように、すべての学校のアンケート用紙を一気に連続印刷したいのです。 ちなみに、VBAに関しては全くの素人です。 はじめは、Excelで作成したアンケート用紙をWordに画像として貼り付けて、学校欄と整理番号欄をWord文書上に設けて差込印刷でやろうとしていました。 ですが、それだと調査人数をもとにして通し番号を振ることができず、ギブアップしました。 おそらくマクロを使うのだと思いますが、もし、マクロを使わなくてもすむ方法があれば、それも教えていただきたく、よろしくお願いします。

みんなの回答

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

これはVBAを使わないとできないでしょう。自動印刷は関数では絶対できない。 難しいことを要求しておいて、>VBAに関しては全くの素人です、はおかしい。ビジネスなどにエクセルを使いたければ、VBAを知らないとできないと、私は回答で説いています。 ーーー ごく簡単な、中身が3行のVBAでやって見せます。 ただ奇抜な工夫がいることはやむを得ません。頭のすっきりしたときに、下記例をたどり、どういう理屈か、また自分の場合どう変えればよいか考えてください。 ーー Sheet2に、学校リストがあるとします。 部数はテスト上少数にしました。 A列に列挿入して A列  B列  C列 D列 0 A学校 3 0 4 B学校 2 3 6 C学校 5 5 11 A列、D列は(A1,D1を除き)関数の結果です。 ーー A1は0、A2は=SUM($C$1:C1)+1と入れて学校数(3行)だけ下に 式を複写します。結果は上記のとおり。第1行目の学校からの累積数+1であります。 D1は0、D2は=SUM($C$1:C1)と入れて下方向に式を複写。 ーー Sheet1をアンケート用紙として、印刷するものとします。 A1には学校名をいれ、B1には学校ごと連番を入れます。 D1に総連番を入れます。色を白い文字色などにして見えなくするか 印刷範囲外に設定する。 ーー Sheet1のモデル C学校 5 10 アンケート 問1 XXX Y N 問2 YYYYY Y N 問3 XXXXX Y N 問4 ZZZ Y N ーー 印刷 VBE画面の挿入ー標準モジュールに下記を貼り付ける。 Sub test01() For i = 1 To 10 Worksheets("sheet1").Range("D1") = i Worksheets("sheet1").Range("A1:E11").PrintOut Next i End Sub 注意 10は前項類型数で書き換える。    自動でVBAで取れるが、VBAコードを難しくしないため、  人間がセットすることで済ましているもの。   Range("A1:E11").の部分はアンケート用紙の印刷内容が含まれる   セル範囲を指定してください。   Sheet1は現実のシート名に変更してください。   式の中のSheet2も同じ。 ーーー A学校3枚、B学校2枚、C学校%枚印刷しました。連番もうまくいきまた、

inaooo
質問者

補足

ありがとうございます。早速挑戦してみました。 Excel関数の部分までは理解できましたが、上述のサンプルどおり実行してみたら、 Sheet1のD1に総連番は印字されたのですが、A1とB1は、すべて空欄になってしまいました。 貼り付け内容(↓)のうち、 Sub test01() For i = 1 To 10 Worksheets("sheet1").Range("D1") = i Worksheets("sheet1").Range("A1:E11").PrintOut Next i End Sub 学校リスト(sheet2)を差し込む指示がどれに当たるのでしょうか。 恐れ入りますが、もう少しご教示いただけないでしょうか。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

#01です。 書き忘れました。先のマクロでは「アンケート用紙」シートと、「学校リスト」シートは一つのエクセルブックにあることを前提にしています あと、もっと大事なことを書き忘れていました。WORDの差し込み印刷でも可能ですよ。差し込むエクセルのデータを 学校名 連番  A     1 A     2 A     3 A     4 B     1 B     2 B     3 のように作れば良いだけではないでしょうか?

inaooo
質問者

お礼

ありがとうございます。 上記アドバイスどおり、いまある学校リストを調査件数分のレコードに修正すると印刷できることは分かったのですが、その方法を実行するには件数が多すぎると思ったので、質問させていただいた次第です。まずはNo.1の方法にチャレンジしてみます。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

どうしてもマクロが必要になります。 学校リストシートの学校名はA列、人数はB列にあるものとしてマクロを書いてみました。(もし違っていたらご自身では修正ができないでしょうから、すみませんがこの前提に合わせてください) まず以下のマクロをALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて下さい。 次にマクロの2~5行目を実際のシート構成にあわせて修正します。 マクロの実行はアンケート用紙シート画面に戻って、ALT+F8でマクロ一覧を開き、マクロ名(QUESTIONNAIRE)を選択して「実行」ボタンです。 Sub QUESTIONNAIRE() Const wsA As String = "アンケート用紙" 'アンケート用紙のシート名 Const wsG As String = "学校リスト" '学校リストのシート名 Const rngG As String = "A1" '学校名を挿入するセルアドレス Const rngR As String = "A2" '連番を挿入するセルアドレス Dim cnt, idx As Integer  With Worksheets(wsG)   For idx = 1 To .Range("A65536").End(xlUp).Row    If IsNumeric(.Cells(idx, "B").Value) And _       .Cells(idx, "B").Value > 0 Then     Worksheets(wsA).Range(rngG).Value = .Cells(idx, "A")     For cnt = 1 To .Cells(idx, "B").Value      Worksheets(wsA).Range(rngR).Value = cnt      ActiveSheet.PrintOut     Next cnt    End If   Next idx  End With  Worksheets(wsA).Range(rngG).Value = ""  Worksheets(wsA).Range(rngR).Value = "" End Sub >VBAに関しては全くの素人です。 とのことですが、うまくいかないときは「どこまでやったら、どのような結果になった。どんなメッセージが表示された」かを明確に補足して下さい。ただ「うまくいきません」では補足回答のしようがありませんので(^^;

inaooo
質問者

お礼

ありがとうございました。 設定して実行したらちゃんと印刷されました。

関連するQ&A

  • ちょっと特殊な連続印刷のマクロを教えてください

    次のような名簿があるとします。 A列    B列     通し番号 名前     1    阿部 2    佐々木 空白   空白 4    木村 5    田辺 空白   空白 空白   空白 8    三浦 通し番号が入力されていない場合は、名前も表示されない様になっています。 セルC1に通し番号を順々に表示(マクロで指定) セルC2にその番号の名前を参照表示←個人票として印刷 番号があれば(名前が表示されれば)印刷 としたいです。 個人票を連続印刷したいのですが、空白を飛ばして、 番号が入っている人だけを印刷、というマクロがどうしても組めません。 一つ一つ、番号が入っていれば名前を印刷のようなマクロを延々と 組むことは出来るのですが、名簿が長大なのでそれは避けたいです。 よろしくお願いします。

  • EXCELで作成した案内状を名前を入れて連続印刷したいのです。

    EXCELで作成した案内状があります。--------シート1 A欄に一連番号、B欄に名簿(名前)、 C欄に各自に伝えたい文章--シート2 (シート1)案内状には、1つのセルにVLOOKUP関数で一連番号の1.2.3.4.-----100を、入れていくと「名前」と「伝えたい文章」が次々に別セルでAさん、Bさん、Cさんと入れ変わっていきます。印刷もその都度、100回やらないといけません。(伝えたい文章も変わる) どうか、マクロでボタン1回押すだけで「1」~「100」まで自動で変わり、連続印刷できないでしょうか? 良い方法があればマクロじゃなくて、他の方法でも構いません。

  • マクロで印刷時に連続番号を付けたい

    エクセル 2003 で  印刷時に 例えば 同じ文章で  A10 のセル位置に  印刷するときに マクロで1から Nまで の整理番号を順番に付けて印刷したいのですが ご指導ねがいます 1回目の印刷は 1 2回目の印刷は 2

  • 長3封筒に連続で宛名印刷したい

    お世話になります。 長3封筒に200人ぐらいの宛名を連続で印刷したいのです。 会社で出すお礼状です。 印字する項目は下記の項目です。 〒番号 住所1 住所2 会社名 役職 氏名 住所録はWORDでもEXCELでもどちらを使っても構いませんので、簡単に 出来る方法をご教示いただけませんでしょうか? ネットを色々見ましたが難しくてイマイチよく分かりませんでした。 月曜日に印刷しなくてはいけないので出来るだけ急いでおります!m(_ _)m どなたかお知恵をおかしください。よろしくお願い致します! WORD2013,EXcel2013

  • エクセルで名簿を連続印刷したい。

    エクセルで名簿を連続印刷したい。 Sheet1に縦に2枚同じ様式のフォームがあります。 A1、A24に、それぞれ名前を連続して印刷したいと思っています。 Sheet2に、名簿があります。 A列 B列 日付 氏名 1  Aさん 2  Bさん という感じで、120名の名簿リストがあります。 どのようにすれば、2箇所名前を連続で入れることができるでしょうか? どうぞよろしくお願いします。 *フォーマットを作った人は別でして、これでできるようにしてくださいと言われています。

  • マクロの連続印刷

    エクセルのシート1に情報が登録してあり、A列の番号をシート2のセルA1に入力すると情報が入る仕様のブイルックを組んでいます。 これを連続してA1,A2,A3と連続印刷したいのですがどのようなマクロを組めばよいのでしょうか?

  • エクセルで通し番号を打ちたいんです

    イベントで使う整理券を作るのですが、通し番号を表示できるようにエクセルで作るにはどうしたらいいでしょうか?整理券は A4の紙に8枚分印刷して、後からカットします。番号は1~320位ですが、わざわざチケット320枚分コピペして番号を手打ちするのは面倒なので、8枚分(A4・1枚)エクセルで作って、320枚分(A4・40枚分)を印刷できたらいいなぁ、と思います。尚且つ通し番号を打つなんてわがままなことできるんでしょうか?素人なのでわかりやすく教えていただけたら幸いです。

  • エクセルの表データを用紙に貼り付けて印刷する方法

    Excel2003で表データ(1600件分くらいあります)を 請求書の書式に貼り付けて印刷したいのですが、 マクロやVBAの本を読んでもなかなか理解できません。 マクロを使って印刷まで行う方法をお教え下さい。 よろしくお願いします。 ■表データ A B  C  D  E    F 1 番号 名前 住所 電話番号 請求額 2 1  鈴木 東京 03-**  10000 3 2  田中 大阪 06-**  20000  ↓ これを請求書の書式に ■請求書  整理番号 ○○   住所 □□□   名前 □□  殿      請求額 □□□□

  • エクセルのマクロの連続印刷で困っています。

    初心者です。 エクセルのマクロで通知書を指定した番号~番号までを連続印刷 させたいのですが、印刷をすると、印刷結果が最初の番号は指定した 番号まで印刷されて良かったのですが、次から最後までの番号の 印刷が同じものが印刷されていき、どんどん増えていってしまって いて困っています。 いろいろとやり方を変えてみたりしたのですが、どこが間違えて いるのかが結局分からず、どなたか詳しい方、教えていただけます ようでしょうか?>< よろしくお願いします。 ---- 失敗経緯は↓の感じです ・ただ連続印刷させたらシート1まで印刷したのでシート2を  セレクトさせるようにした ・連続印刷させるように指示した番号が繰り返し印刷される  のでプレビューさせて、プレビューされた1枚だけが印刷  させるようにプレビューを追加した にもかかわらず、プレビューでは1枚だけがプレビューされ るのに印刷結果はプレビュー以外の番号のものまで印刷されて しまいます。しかも、既に印刷がされているものまでもです。 シート2は、VLOOKUPで読み込ませているものは1人分だけの 情報のはずなのに、何故、それ以外の人の分まで印刷して しまうのでしょうか>< エクセルの構成は、 ・シート1 通知書に印刷させる用でID管理用の一覧になっています。 このシートにシート2で印刷させたいNoを入力・印刷指示 をさせています。 ・シート2 シート1で指定されたNoをVLOOKUPで読み込ませて表示させて います。(1人分で1枚のみ) ・セルには名前をつけています Sub 通知書を連続印刷する() myMsg = MsgBox(Range("通知書連続始め").Value & " 番から " & Range("通知書連続終わり").Value & " 番まで一括印刷しますか?" & Chr(10) & Chr(10) & "現在の使用プリンタは " & Application.ActivePrinter & " になっています。", vbOKCancel) If myMsg = vbOK Then For i = Range("通知書連続始め") To Range("通知書連続終わり") Range("連続印刷するNO").Value = i Worksheets("シート2").Select Worksheets("シート2").PrintPreview (False) Worksheets("シート2").PrintOut Next Else MsgBox (" 一括印刷を中止しました ") End If End Sub

  • ワードでの通し番号印刷

    社内イベントでの、景品引き換え券を400枚作ろうとしています。 A4用紙に、4枚分か、9枚分印刷して、裁断しようと考えています。 これに1~400の通し番号を付けたいのですが何か良い方法がありますか? A4用紙1枚あたり番号1つではなく、A4用紙1枚あたり、4つか9つの通し番号を付ける、という点で困っています。 使えるソフトは、ワード、エクセル、パワーポイントです。 よろしくお願いします。

専門家に質問してみよう