• 締切済み

エクセルからエクセルへの差込印刷

エクセルのデータをワードへ差込印刷はできるのですが、エクセルへ差し込む方法を教えていただきたけますか。 エクセルで作った、学年の試験得点の一覧表があります。 これをエクセルで作った個人票に差し込みたいのです。

みんなの回答

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

#01です。補足ありがとうございました。 印刷する元データの表は分かりました。A列~J列にデータがあるのですね。 印刷シートは1ページの印刷シートに生徒5名分のデータが印刷されるという解釈でよろしいでしょうか また、  >1)氏名:A2、国語:B2、数学:C3…順位:J3 の氏名:A2、国語:B2はA3、B3ですね。 以下のマクロをALT+F11でVBE画面を開き、「VBAProjectエクスプローラのシート名右クリック」→「挿入」→「標準モジュール」で表示される画面にペーストして下さい。実行はシート画面に戻って、ALT+F8を押してマクロ一覧からマクロ名を選択して実行します。 シート名は3、4行目を実際のシート名に変更してから実行してください。 Sub Macro1() Dim LastR, idx, ptr, cntPage As Integer Const orgSheet As String = "元データ" Const prnSheet As String = "印刷シート"  LastR = Worksheets(orgSheet).Range("A65536").End(xlUp).Row  For idx = 2 To LastR Step 5   For ptr = 0 To 4    Worksheets(prnSheet).Cells(3, 1).Offset(ptr * 3, 0).Resize(1, 10).Value _     = Worksheets(orgSheet).Cells(idx, 1).Offset(ptr, 0).Resize(1, 10).Value   Next ptr   cntPage = cntPage + 1   Worksheets(prnSheet).PageSetup.CenterFooter = cntPage   Worksheets(prnSheet).PrintOut copies:=1  Next idx  Worksheets(prnSheet).PageSetup.CenterFooter = "" End Sub

JZ302
質問者

お礼

ありがとうございました。 VBAを学習しようと思います。

  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.3

こんばんは。 ワードの差込印刷を使えば簡単にできますよ。 それからエクセルワードの質問をする時は、バージョン(Excel2000とか2003とか)を書いた方がベターです。 以上です。

JZ302
質問者

お礼

ありがとうございます。 エクセルからエクセルの差込を知りたいのです。 バージョンは2003です。

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

エクセルからエクセルへは差込印刷とは言わないようです。 ニーズは良くわかりますが。 VBAだけでやる方法ももちろんあります。一挙にそこに行かないで、中間のやり方をお勧めします。 Sheet1に生徒1人が1行に記録されているデータがあるとします。 Sheet2にデータセル以外の1セルを作業セルに使います。 そのセルの内容は第何行目の生徒のデータを参照しているかという数を示します。 Sheet2に浮動文字(見出しなど)・罫線・フォント・色などは各人共通とします。 ーー 例データ Sheet1 A1:D3 氏名    国語   算数 理科 木村 卓郎 23 34 45 高松 茂 33 41 28 ーーー Sheet2 G1(どこでも良いが印刷範囲外に仮に) 2 ーー 個人票の浮動文字例 下記xx以外。()内はセル番地 xxは可変内容。そのセルには、下記関数式を入れる。 XXXXX(C3) 成績点数一覧(D3) 国語(C5) xx(D5) 算数(C6) xx1(D6) 理科(C7) xx(D7) 合計(C9) xx(D9) 平均(C10)xx(D10) ーー C3の式 =INDIRECT("Sheet1!A"&Sheet1!$G$1) D5の式 =INDIRECT("Sheet1!B"&Sheet1!$G$1) D6の式 =INDIRECT("Sheet1!C"&Sheet1!$G$1) D7の式 =INDIRECT("Sheet1!D"&Sheet1!$G$1) D9の式 =SUM(D5:D7) D10の式 =AVERAGE(D5:D7) ーーー G1の数を3に変えると 高松 茂 成績点数一覧 国語 33 算数 41 理科 28 合計 102 平均 34 のように変わるのを確認し、納得してください。 ーーー これを印刷します。これはG1の値を手動で変えた都度、手操作で印刷をやる方法がありますが、自動で一斉にやりたいでしょうから ツールーマクローVBEで標準モジュールの画面に Sub test01() d = Worksheets("Sheet1").Range("A65536").End(xlUp).Row 'Sheet1A列最終行数取得 For i = 2 To d 'Sheet2の第2行から第d行まで繰り返し Range("G1") = i 'Sheet2のG1セルに行数をセット Range("A1:E12").PrintOut '印刷範囲は実情に合わせ Next i End Sub を貼り付けて、実行する(F5キーを押す)。 Sheet2をアクチブにして実行すること。 上記コードないをクリックしておいて実行すること。 たった5行なので辛抱して理解してください。 ーー 自分の場合に合わせるにはどう修正するか、類推を働かせてください。 実行発動方法はボタンやメニューやショートカットなど色々ありますのでVBAの解説を読んでください。

JZ302
質問者

お礼

丁寧に書いて下さり、ありがとうございます。 これほど複雑なものは私の頭では無理です。 もっと単純なやり方はないのでしょうか。

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

これはマクロでないと実現できないと思います。次のことを教えてください 印刷元シート(生徒毎の得点が書かれたシート)  1)どの列に何の科目の点数が書かれているか    例)A列:氏名、B列:国語、C列:数学… J列:順位  2)生徒のデータは何行目から始まっているか 印刷するシート  1)印刷元の各項目を、どこのセルに書き込めば良いか    例)氏名:A2、国語:B5、数学:B6… 順位:J10  2)印刷するのシートは1頁ですか、それとも複数頁ですか

JZ302
質問者

補足

お世話になります。 印刷元シート 1)例)にお書きになった通りです。 2)2行目からです。 印刷するシートは1枚のシートに以下の表が5個分書いてありますが、300人分必要です。 1)氏名:A2、国語:B2、数学:C3…順位:J3 (余白2行)  氏名:A6、国語:B6、数学:C6…順位:J6 (余白2行) 2)300人分が印刷できる頁数 以上です。よろしくお願いします。