- ベストアンサー
エクセルで シート1の名前のデータ(1000件)を元にシート2の招待状に名前を入れて印刷する方法
こんにちは。 エクセルで シート1 のÅ1 .2.3.4.5.6.7......1000 に相手様の名前のデータが1000件あるとします。 シート2に招待状があるとします。 シート2の招待状の上部分に シート1の名前データを、末尾に様を入れて1000枚印刷する方法はないでしょうか?? 理想は自動で シート2 招待状1 の上に シート1のÅ1(名前)様 招待状2 の上に シート1のÅ2(名前)様 。 。 。 招待状1000の上に シート1のA1000(名前)様 A1様 ←(ここを自動変更して1000枚印刷をしたい) 。。。。。。。。。。。。。。。。 。。。。。。。。。。。。。。。。 。。。。。招待状。。。。。。。。 。。。。。。。。。。。。。。。。 。。。。。。。。。。。。。。。。 おわり となるようにしたいです。このようなことは出来ますでしょうか?? 説明が下手で雑文ですが、アドバイスしてやってください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
関数とVBAを使ってする方法です。自動で印刷するのは関数では無理ですので、印刷の部分だけ簡単なVBAを使います。 招待状の印刷されないセルに検索値を記入し、印刷していく方法です。 例えば招待状のあるシートのA1のセルが印刷部分でないとします。そこで「~様」と表示したいセルに=VLOOKUP(A1,シート1!A1:A1000,1)と入れます。最初のA1は招待状のあるシートのセルです。シート1!A1:A1000の部分はシート1のシートのA1~A1000までの範囲ということです。最後の1は、A1~A1000の範囲の1列目ということです。なお、シート1はシート名ですので適宜、Sheet1などに代えてください。 印刷部分を指定しておきます。 次にAlt+F11でVisualBasicEditorを開いて、「挿入」「標準モジュール」でモジュールを作って下記のマクロを保存してください。 Sub Lprint() '1番目から1000番目まで印刷する For i = 1 To 1000 Cells(1, 1) = i ActiveSheet.PrintOut Next End Sub 招待状のあるシートを開いておいてから、Alt+F8でマクロを実行すれば印刷されます。
その他の回答 (2)
- CHRONOS_0
- ベストアンサー率54% (457/838)
VBAを使わないでやるなら招待状はWORDで作って差し込み印刷がいいんじゃないですか
- mshr1962
- ベストアンサー率39% (7417/18945)
VBAを使えば可能ですが? Alt+F11でVisualBasicEditorを開き 「挿入」「標準モジュール」でモジュールを作って下記のマクロを保存 Sub LPRINT() '差込印刷 Dim StNO, EdNO, LtNO As Single Dim PCnt, CCnt As Single Dim ToNAME As String '印刷範囲指定 LtNO = Worksheets("Sheet1").Range("A65536").End(xlUp).Row StNO = InputBox("開始行を指定してください。", 1) EdNO = InputBox("終了行を指定してください。", LtNO) If EdNO > LtNO Then EdNO = LtNO '印刷 Worksheets("Sheet2").Activate For I = StNO To EdNO ToNAME = Worksheets("Sheet1").Cells(I, 1).Value If ToNAME <> "" Then ActiveSheet.Range("A1").Value = ToNAME Print PCnt = PCnt + 1 Worksheets("Sheet1").Cells(I, 2) = Date Else CCnt = CCnt + 1 Worksheets("Sheet1").Cells(I, 2) = "×" End If Next I '結果 MsgBox "印刷件数:" & PCnt & "件 空白件数:" & CCnt, vbOKOnly, "招待状印刷結果" End Sub 「ツール」「マクロ」「マクロ」のダイアログで上記を選択して実行 ※Sheet1のB列に印刷日をセットしてます。