みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

エクセルのデータをワードへ差込印刷はできるのですが、エクセルへ差し込む方法を教えていただきたけますか。

エクセルで作った、学年の試験得点の一覧表があります。
これをエクセルで作った個人票に差し込みたいのです。

投稿日時 - 2007-03-02 23:49:17

QNo.2798008

困ってます

このQ&Aは役に立ちましたか?

9人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.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

投稿日時 - 2007-03-05 11:50:19

お礼

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

投稿日時 - 2007-03-05 21:21:01

ANo.3

こんばんは。

ワードの差込印刷を使えば簡単にできますよ。

それからエクセルワードの質問をする時は、バージョン(Excel2000とか2003とか)を書いた方がベターです。

以上です。

投稿日時 - 2007-03-04 21:53:31

お礼

ありがとうございます。

エクセルからエクセルの差込を知りたいのです。
バージョンは2003です。

投稿日時 - 2007-03-04 22:27:29

ANo.2

エクセルからエクセルへは差込印刷とは言わないようです。
ニーズは良くわかりますが。
VBAだけでやる方法ももちろんあります。一挙にそこに行かないで、中間のやり方をお勧めします。
Sheet1に生徒1人が1行に記録されているデータがあるとします。
Sheet2にデータセル以外の1セルを作業セルに使います。
そのセルの内容は第何行目の生徒のデータを参照しているかという数を示します。
Sheet2に浮動文字(見出しなど)・罫線・フォント・色などは各人共通とします。
ーー
例データ Sheet1 A1:D3
氏名   国語   算数理科
木村 卓郎233445
高松 茂334128
ーーー
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の解説を読んでください。

投稿日時 - 2007-03-03 10:00:46

お礼

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

投稿日時 - 2007-03-03 23:57:30

ANo.1

これはマクロでないと実現できないと思います。次のことを教えてください

印刷元シート(生徒毎の得点が書かれたシート)
 1)どの列に何の科目の点数が書かれているか
   例)A列:氏名、B列:国語、C列:数学… J列:順位
 2)生徒のデータは何行目から始まっているか

印刷するシート
 1)印刷元の各項目を、どこのセルに書き込めば良いか
   例)氏名:A2、国語:B5、数学:B6… 順位:J10
 2)印刷するのシートは1頁ですか、それとも複数頁ですか

投稿日時 - 2007-03-03 00:50:46

補足

お世話になります。

印刷元シート
1)例)にお書きになった通りです。
2)2行目からです。

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

投稿日時 - 2007-03-03 23:24:29

あなたにオススメの質問