エクセル住所録リストから別のエクセルシートの表へ差し込み印刷するVBA

エクセルからエクセルへ差し込み印刷

エクセルシートに名簿や商品リストを一覧にまとめて順番に記載している事があり、このリストを別のエクセルシートで作成してある表などに移し替える「エクセルからエクセルへの差し込み印刷」をしたいと思ったことはありませんか?

実は意外と簡単で、繰り返し処理「For~Next」を使えば簡単にでき、1枚1枚自分で手入力しなくて済むので作業効率化できますよ。

目次

エクセルからエクセル差し込み印刷

エクセルからエクセルへの差し込み印刷は難しそうに思えますが、日本語で次のように考えると簡単で、下記のような順番でVBAコードを書けば差し込み印刷ができます。

エクセル差し込み印刷のイメージです。

  1. リストの1番~リスト最終まで以下の作業(差し込み)を繰り返し行う
  2. リスト1番から必要な情報(名前や企業名など)を指定したセルに転記する
  3. 印刷を実行する
  4. 印刷が終わったら次のリスト2番以降も繰り返す

イメージはこのようになりますので、実際にエクセルからエクセルへの差し込み印刷の手順に従い、作成していきます。

ワークシートの準備

まず最初は、差し込み印刷をするデータ(住所録や顧客リストや商品リスト)を準備しましょう。

もちろん、すでに利用しているリストがあればそのまま使用でき、ここでは実際に使っている住所録を使いますので、エクセルからエクセルへの自動差し込み印刷をVBAで作るといっても、新たに何かすることはほぼありません。

唯一追加したのが、印刷を繰り返して行う為にリストの数を自動的に数える為の数式だけで、たまたま空いていたセル「A1」に記載しました。

エクセルからエクセルへ差し込み印刷
実際のデータの為ボカシています
リストの数を数える数式

=COUNT(A2:A700)+1

リストが入力されているセルA2~A700までの範囲で入力済みセルの数を数える、COUNT関数を使用していて「+1」にしているのはリストが2行目からスタートしている為です。

「+1」にする理由は、サンプル画像は518となっていますのでリストの数は518人となりますので、差し込み印刷は1人目~518人目となり、行数で言うと2行目から519行目ってことになりますね。

その為に「+1」を忘れると、一番最後の人(最終行のリスト)が印刷漏れになってしまうので、「+1」は必要なのです。

リストの準備は完了ですがもし結合セルが含まれている場合は、結合解除して1つのセルには1つの項目に整える必要があります。

コマンドボタンにVBAコードを記述

ここでは、ユーザーフォームにコマンドボタンを配置して、差し込み印刷用のVBAコードを書きます。

ここではサンプルとして、下記のように顧客IDはリストのA列、名前は列にあり、用紙に印刷する場所は用紙のA2とA3に指定します。

エクセルへ差し込み印刷
実データとは異なりますが分かりやすく省略しました

実際に利用している差し込み印刷のVBAコードは下記の通りで、参考になればご自由にコピペして活用していただいても構いません。

エクセルからエクセルへ差し込み印刷するVBA

Private Sub CommandButton1_Click()
msg = MsgBox(“印刷しますか?”, Buttons:=vbYesNo + vbExclamation)
If msg = vbYes Then
For i = 2 To Range(“A1”).Value
Sheets(“用紙”).Range(“A2”).Value = Cells(i, 1).Value
Sheets(“用紙”).Range(“A3”).Value = Cells(i, 2).Value
Worksheets(“用紙”).PrintOut FROM:=1, To:=1, COPIES:=1, COLLATE _
:=True
Next i
End If
End Sub

解説
  1. コマンドボタン1がクリックされたら
  2. メッセージで印刷をするかしないかを選択させる
  3. 「はい」が押されたら
  4. 変数「i」を宣言して変数は2~セルA1の値まで
  5. シート名「用紙」のセルA2にセル(i行目の右に1列目)の値を記載する
  6. シート名「用紙」のセルA3にセル(i行目の右に2列目)の値を記載する
  7. シート名「用紙」を1ページ目から1ページ目までを1枚印刷する
  8. 変数iを繰り返す
  9. Ifステートメント終了
  10. マクロ終了

いかがでしょうか?エクセルからエクセルへの差し込み印刷は、たったこれだけのVBAコードを書くだけで、ワンクリックするだけで518個のリストが自動で差し込み印刷できるので、ほかの作業をしている間に自動的に印刷してくれるので作業効率化できますよ。

差し込み印刷に使ったVBA

ここで紹介した「エクセルからエクセルへの差し込み印刷」では、様々なVBAコードを組み合わせて作っていますが、それぞれの詳細について省略しましたので、個別の内容については下記をご覧くださいませ。

目次