前の1件 | -
Excelだけで宛名を連続印刷 [パソコン]
今回は、Excelによる帳票印刷を応用して、年賀状の宛名を印刷します。もちろん連続印刷、指定印刷も可能。ExcelとWordを組み合わせて、簡単に帳票印刷はできますが、既存の用紙にExcelからデータのみを印刷したい場合、Wordの表を使うのでは位置合わせに苦労します。そこで、Excel単体での宛名印刷をしようというのが今回のテーマです。
市販の年賀状作成ソフトは簡単に美しく印刷できます。しかしハガキしか印刷できません。今回の記事を完全にご理解いただければ、PDFで配布される様式にExcelデータを印刷したり、賞状に名前だけ印刷したりと、様々な用途に可能性を見出せることでございましょう。 |
||
宛名の様式を作る
|
||
まず、Excelを開き、タブの「ページレイアウト」→「サイズ」をクリックし、「ハガキ」を選択します。
年賀状のサイズを測り、このようにセルの大きさを設定します。0.1ミリ単位の設定はフリーソフトのアドインを使うと便利です。私は「Excelセンチ単位」というフリーソフトを使わせていただきました。http://www.officelabo.net/ 余白は以下の設定で。(単位はミリ) |
||
印刷設定は、「ページレイアウト」→「ページ設定」の「余白」で、「上」11、「下」18、「左」5、「右」4「ヘッダ」0、「フッタ」0、「ページ中央」の「垂直」、「水平」にチェックを入れます。 いつものことですが、位置合わせは印刷しながら確かめて調整するので大変でございました。
|
||
左はハガキ様式の印刷範囲が完成した状態です。下のようにセルZ1~Z3に枠を作ります。No.の下の枠にはSheet2の住所録のデータの番号が「VLOOK関数で読み込まれるようにします。 | ||
住所録をつくる | ||
Sheet2に住所録の表を作ります。 | ||
列E(郵便番号)のセルの後ろに7つセルを設け、列Eのデータを1文字ずつ分割して取り込みます。セルF2には「=LEFT($E2,1)」セルG2には「=MID(E2,2,1)」、セルI2には「=MID(E2,FIND("-",E2)+1,1)」という具合に工夫して。このセルの値を年賀状の様式に「VLOOKUP関数」で読み込むのです。
マクロを使いたいのですが、最近は標準設定でマクロが使えるようになっていません。まず「開発」タブを表示させることから始まります。やり方がわからない方はネットで調べましょう。
「開発」タブを開き、「挿入」をクリック、「ActiveXコントロール」内の「スクロールバー」を選択します。右下のように罫線を使って描いた枠の横に十字カーソルをドラッグしてスクロールバーを描きます。 |
||
スクロールバーが設置できました。 | ||
次に「デザインモード」にして設置した「スクロールバー」を右クリックで指定してから、「コードの表示」をクリックし、以下のように入力します。
Private Sub CommandButton1_click() UserForm1.Show End Sub Private Sub Scrollbar1_change() Sheets("Sheet1").Range("Z2").Value = ScrollBar1.Value+1 End Sub |
||
ここのZ2とは先ほどスクロールバーを取り付けた左の番号が表示されるセルの番地です。 さらに「プロパティー」の「MAX」をデータの最大値に「MIN」を1に指定します。以上の作業で「スクロールバー」をクリックすることにより「番号」枠に自然数が増減1で現れるうになります。
|
||
|
||
印刷用ユーザーフォームの設定
|
||
次に「Visual Basic」→「挿入」→「ユーザーフォーム」とクリックしていきます。「ツールボックス」の「コントロール」より「テキストボックス」を選択します。
|
||
十字カーソルをドラッグして「ユーザーフォーム」の中央付近にテキストボックス枠を設定します。表示桁数により縦横の比率を決めます。 | ||
続いて「ラベル」を選択し、「テキストボックス」の上にラベル枠を設定、「開始ページ」と入力します。同じく「終了ページ」を作ります。 | ||
さらに「コントロール」の「コマンドボタン」を選択し、右上のようにユーザーフォームに設定します。とりあえず名前を「印刷開始」と書き換えます。 | ||
できた「ユーザーフォーム」をダブルクリックするとコードが表示されます。そこに以下を入力します。
|
||
Private Sub Label1_Click() End Sub Private Sub TextBox2_Change() End Sub Private Sub CommandButton1_Click() first = TextBox1.Value last = TextBox2.Value For i = first To last Sheets("Sheet1").Select Worksheets("Sheet1").Range("Z2").Value = i ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Next i End Sub Private Sub UserForm_Click() End Sub |
||
VisualBasicの画面を閉じて「開発」の画面に戻り、「挿入」から「ActiveXコントロール」の「コマンドボタン」を選択し、左下のようにコマンドボタンを設定します。そして名前を「印刷」と書き換えます。 | ||
セルZ2には「スクロールバー」をクリックすることによって番号が出現しますから、この番号に対応するデータを任意のセルに「VLOOKUP関数で」読み込みます。たとえばセルJ1に=VLOOKUP(Z2,Sheet2!A2:N26,6,FALSE) と入力すると「Sheet2]からセルZ2と同じ番号の人の郵便番号データの先頭の数字をセルに読み込んできます。同じようにして年賀状様式のそれぞれのセルへ数式を入力します。最後にフォントや表示形式を設定します。 |
||
年賀状様式のセルの罫線を消して、印刷範囲を指定しておきます。 これでハガキに文字だけ印刷されます。 例 セルT3はセルの書式を次のように。 文字列の方向 縦 横位置 中央揃え 縦位置 上詰め(インデント) 縮小して全体を表示する 差出人データはハガキ様式のセルに直接入力します。 |
||
「印刷開始」ボタンをクリックすると、ユーザーフォームが現れます。「開始」と「終了」に印刷したいデータ行の番号を直接入力し、「印刷開始」ボタンをクリックすると連続印刷が始まります。
|
||
セルごとの設定を適切に行うと右のようにかなりの精度で差し込み印刷ができました。セルの書式設定で表示形式のユーザー定義を「#,##」にしておくとデータが空欄でも0表示されないようになりますから忘れずに。 | ||
くれぐれも、今回の記事は年賀状だけの印刷方法だと考えないでいただきたいと思います。年賀状印刷ならばいろいろな面で専用ソフトを使う方がいいに決まっています。このやり方で様々な様式に文字だけ帳票印刷ができることをご理解いただくことを願っております。 |
前の1件 | -