- 締切済み
エクセルからエクセルへの差込印刷
エクセルのデータをワードへ差込印刷はできるのですが、エクセルへ差し込む方法を教えていただきたけますか。 エクセルで作った、学年の試験得点の一覧表があります。 これをエクセルで作った個人票に差し込みたいのです。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- zap35
- ベストアンサー率44% (1383/3079)
#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
- onlyrom
- ベストアンサー率59% (228/384)
こんばんは。 ワードの差込印刷を使えば簡単にできますよ。 それからエクセルワードの質問をする時は、バージョン(Excel2000とか2003とか)を書いた方がベターです。 以上です。
お礼
ありがとうございます。 エクセルからエクセルの差込を知りたいのです。 バージョンは2003です。
- imogasi
- ベストアンサー率27% (4737/17070)
エクセルからエクセルへは差込印刷とは言わないようです。 ニーズは良くわかりますが。 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の解説を読んでください。
お礼
丁寧に書いて下さり、ありがとうございます。 これほど複雑なものは私の頭では無理です。 もっと単純なやり方はないのでしょうか。
- zap35
- ベストアンサー率44% (1383/3079)
これはマクロでないと実現できないと思います。次のことを教えてください 印刷元シート(生徒毎の得点が書かれたシート) 1)どの列に何の科目の点数が書かれているか 例)A列:氏名、B列:国語、C列:数学… J列:順位 2)生徒のデータは何行目から始まっているか 印刷するシート 1)印刷元の各項目を、どこのセルに書き込めば良いか 例)氏名:A2、国語:B5、数学:B6… 順位:J10 2)印刷するのシートは1頁ですか、それとも複数頁ですか
補足
お世話になります。 印刷元シート 1)例)にお書きになった通りです。 2)2行目からです。 印刷するシートは1枚のシートに以下の表が5個分書いてありますが、300人分必要です。 1)氏名:A2、国語:B2、数学:C3…順位:J3 (余白2行) 氏名:A6、国語:B6、数学:C6…順位:J6 (余白2行) 2)300人分が印刷できる頁数 以上です。よろしくお願いします。
お礼
ありがとうございました。 VBAを学習しようと思います。