- ベストアンサー
エクセルの名簿一覧表からすでにエクセルで作られている一人づつのシートに差込印刷
エクセルでできている名簿リストから、すでにエクセルでできている個人別のシートに差込印刷したいのです。一人ずつセル参照で作ることはできるのですが、全部で300人分くらいあるのでワードの差込印刷のように一度にできる方法が知りたいのです。本日中にやらねばならないので手作業では、間に合いそうにありませんしVBAの勉強をしている余裕もありません。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
VBAでもない解答をします。ただファイル-印刷の操作を 300回すること。最終部のようにすれば、VBAで自動化も出来ます。 (1)Sheet2のA1:E3に住所録が 氏名 郵便番号 住所1 住所2 山田 和郎 111-1111 東京都小平市 新町2-1-2 光マンション222 木之下 重雄 222-2222 東京都三鷹市 本町4-3-2 三国荘201 あるとします。本番ではA1:E300とかに住所録があります。 (2)Sheet1は印刷する画面シートです。 F1セルに2、 F2に="Sheet2!A"&F1 F3に="Sheet2!B"&F1 F4に="Sheet2!C"&F1 F5に="Sheet2!D"&F1 F6に="Sheet2!E"&F1 郵便番号を置くセルをB3として式=INDIRECT(F3) 府県市を入れるセルをB5として式=INDIRECT(F4) 町番地を入れるセルをB6として式=INDIRECT(F5) 気付を入れるセルをC6として式=INDIRECT(F6) 名前を入れるセルをB8として式=INDIRECT(F2) C8に「様」を入れる。 (3)F1セルが2の時は 111-1111 東京都小平市 新町2-1-2 光マンション222 山田 和郎 様 となりますが、このA1:C8を印刷する。 (4)F1セルの値を3に変える(3を入力する)と 222-2222 東京都三鷹市 本町4-3-2 三国荘201 木之下 重雄 様 と瞬時に変るが、これを印刷する。 (5)F1を4、5、6、・・・と変えて印刷、変えて印刷すれば良い。 この(5)の部分だけをマクロの記録やVBAにすれば、 同じVBAでも既解答よりずっと易しいと思いますがいかがででしょうか。 Sub test01() Worksheets("sheet1").Activate For i = 2 To 3 '300 Cells(1, "F") = i Range("a1:c8").PrintOut Next i End Sub 行高、セル幅、フォントサイズなどは手動で設定。 氏名、郵便番号、住所を置くセルは自由に出来ます。 上記でF1:F6も自由に別列に設定できます。
その他の回答 (6)
- ja7awu
- ベストアンサー率62% (292/464)
No.5 ですが、急いだのでちょっと訂正です。 どのシートをアクティブにした状態でマクロを実行してもいいようにするつもり でしたので、コードを次のように訂正します。 なお、データの配置が違って使えない場合は、状況を補足願います。 Sub SashikomiPrt() Dim Meibo As Worksheet Dim Kojin As Worksheet Dim Rng As Range Dim R As Range Set Meibo = Worksheets("名簿") '基データシート名指定 Set Kojin = Worksheets("個人別") '印刷シート名指定 Set Rng = Meibo.Range("A2:A300") '差し込むデータの一番左列の範囲 For Each R In Rng '↓ 個人別シートの B2 にA列のデータを差し込む場合 Kojin.Range("B2").Value = R.Value '↓ さらに個人別シートの C2 に 「1つ右のセル」内容を差し込む場合の例 Kojin.Range("C2").Value = R.Offset(, 1).Value ' もっと差し込む場合は、この下に次々記述します。 'Kojin.Range("D2").Value = R.Offset(, 2).Value Kojin.PrintPreview 'プレビューで確認しながら印刷する場合 'Kojin.PrintOut ' 直接印刷する場合。(先頭の ' を上に付替える) Next R Set Meibo = Nothing Set Kojin = Nothing End Sub
- ja7awu
- ベストアンサー率62% (292/464)
データがどのように配置されていて、差込するのは、どの部分なのか、解らないのですが、 取り敢えず、任意に設定できるように作りましたのでテストしてみてください。 たぶん、このようなことと解釈したのですが・・・ 一応、VBAの設定方法を書いておきます。 1.Alt + F11 で VBE(Visual Basic Editor)を開きます。 2.VBE のメニューから[挿入] -->[標準モジュール] を指定します。 3.モジュールウィンドウに下記コードをコピーして貼り付けます。 4.現状に合わせ、6~7行目とその以降の差し込む位置と個数を設定します。 5.Alt + Q (または、右上隅の×)でウィンドウを閉じ、シートに戻ります。 6.メニューから[ツール]-->[マクロ]-->[セキュリティ]で「セキュリティレベル」を 「中」を選択して[OK]します。 7.実行するときは、Alt + F8 (メニューから[ツール]-->[マクロ]-->[マクロ])で 「SashikomiPrt」を指定し、[実行]ボタンを押します。 Sub SashikomiPrt() Dim Meibo As Worksheet Dim Kojin As Worksheet Dim Rng As Range Dim R As Range Set Meibo = Worksheets("名簿") '基データシート名指定 Set Kojin = Worksheets("個人別") '印刷シート名指定 Set Rng = Meibo.Range("A2:A300") '差し込むデータの一番左列の範囲 For Each R In Rng '↓ 個人別シートの B2 にA列のデータを差し込む場合 Kojin.Range("B2").Value = R.Value '↓ さらに個人別シートの C2 に 「1つ右のセル」内容を差し込む場合の例 Kojin.Range("C2").Value = R.Offset(, 1).Value ' もっと差し込む場合は、この下に次々記述します。 'Kojin.Range("D2").Value = R.Offset(, 2).Value ActiveSheet.PrintPreview 'プレビューで確認しながら印刷する場合 'ActiveSheet.PrintOut ' 直接印刷する場合。(先頭の ' を上に付替える) Next R Set Meibo = Nothing Set Kojin = Nothing End Sub
- ozigakura
- ベストアンサー率20% (16/80)
No2の方法で良いと思います。 小生はこういった場合マクロに次のような設定でやっています。 Sheet1が印刷するフォームで印刷範囲の設定済み Sheet2がデータ データに連番たとえばA列 Sheet1の印刷以外のところたとえばA1のセルに印刷データ検索値 Vlookup(検索値、データ範囲(名前をつけると便利)・・・・となりそれぞれの差し込み部分を対応させる。 Sub 印刷print() Dim i As Integer For i = 1 To 300 Worksheets("sheet1").Activate Range("A1").Value = i ActiveSheet.PrintOut 'ActiveSheet.PrintPreview Next End Sub 印刷をしないで確認の場合は’ActiveSheet.PrintOut とし、ActiveSheet.PrintPreviewの ' を外す テストの場合i=1 to 2 とかでやって確認すればよいでしょう
- goohiroko
- ベストアンサー率61% (51/83)
大変ですね。 自動で一度に印刷はできないのですが、1人分印刷ごとに番号入力する程度になら短縮可能です。 データ行の先頭セルに連番を振る事はできますか?また、印刷シートの印刷範囲外のセルに入力は可能でしょうか? できるようでしたら、印刷シート側でVLOOKUP関数を使えばできます。 あまり大したアイディアでは無いですが・・もうすでに思いついてらっしゃるかとも思ったのですが少しでも手助けになればと思い回答してみました。 頑張ってください。
- oresama
- ベストアンサー率25% (45/179)
VLOOKUP関数を使いましょう。 既存のシートの左端に列を一列挿入して、 通し番号を入れます。 あとは、差込印刷したい部分に、 VLOOKUP関数を入力します。 ポイントは、印刷シートの欄外に検索値のセルを設定することです。
- how-do-you-do
- ベストアンサー率56% (59/104)
「word 差込」でgoogle検索、結構かなりヒットします そのなかの一つ http://www.moka-tcg.ed.jp/yuuai/oshirase/word/sasi/
お礼
有難うございました、まとめてお礼させていただきます。でも、結構難しいですね。一人分のデーターをセル参照式にてカードに転記するのはできてるのですが、次の行の同じ列に変えてなどというのは、コマンドで簡単にできるのかと思ってましたので。前日に似たような質問ありましたよと書かれてた人ありましたが、それも私です。ただ、条件をきっちり書いてなかったのでエクセル表からワードの差込印刷すればという意見多くてし直した次第です。補足に書いても反応なかったので。でも、この機能ってエクセルのコマンドにあってもよさそうに思うのは、私だけでしょうか