「平成」を感じるもの

VBAを利用した宛名ラベル作成のコードを教えて頂きたいです。
シート1には
A列:通し番号
B列:会員番号
C列:氏名
D列:郵便番号
E列:住所
が入っています。

〒(郵便番号)
(住所)
(氏名) 様
会員番号 (会員番号)

*()内はシート1のデータより
というレイアウトで横3×縦7の計21枚のラベルが1つのラベル用紙に印刷されるようにしたいです。
Excelのバージョンは2013です。

初心者なものでうまく説明できているかわかりませんが、何卒よろしくお願い致します。

*Wordで差し込み印刷ができるのは知っていますが、できればExcelでつくりたいです。
注文が多く申し訳ございません。

質問者からの補足コメント

  • 補足です。
    ・印刷方向:左→右
    ・書式:横書き
    ・用紙の向き:縦
    ・枠線はいりません
    ・作成順序は左→右

    宜しくお願いします。

      補足日時:2016/10/13 14:41

A 回答 (4件)

VBAですか・・・気が遠くなる作業ですね。


勉強が目的ならいいですが、そんなことに時間をかけるなら市販ソフトを買った方が仕事がはかどりますよ。
http://www.civil-design.net/soft/xl/atena/
    • good
    • 0
この回答へのお礼

ありがとうございます。
確かに非効率的ですね。別のやり方を検討します。

お礼日時:2016/10/14 10:26

私は、よほど試行錯誤を続けないと、Excelでは無理だと思います。


MS-Wordが可能なのは、一枚の用紙なのでズレが出てこないからです。

Excelの特徴で、左端と上端は、きちんと決められるのですが、後は、セルの数に応じて、按分して、その当てはめる数字を丸めていきますので、右端と下端に来ると、かなり数字が変わってきてしまい、とても精密なミリ単位の印刷ができるとは思えません。それだけ、Excelはそういうところが複雑にできているわけです。

>横3×縦7の計21
サイズとしては、例としては 70× 42.4 mm 21面
市販品ですね。

そこで、以下のようなソフトは、ExcelのCSVを使って印刷することができます。
このようなソフトですと、だいたい1mm程度のまでをきちんと合わせることが可能です。

A-oneのラベル屋さん
http://www.labelyasan.com/

日立マクセルのラベルプロデューサー
http://www.maxell.jp/avery/averyprint/labelprodu …
    • good
    • 0
この回答へのお礼

やはりVBAで宛名ラベルを作成するのは難しいのですね・・・。
考え直してみます。

お礼日時:2016/10/14 10:25

「フォームコントロール」の「スピンボタン」を使います。



まずは印刷フォームを作成します。
次にその範囲を印刷範囲に設定します。(F2:F3など)
これで他の場所に何を記入しても指定したセル以外は印刷されません。

続いて「スピンボタン」を設置します。(開発→挿入→フォームコントロールのスピンボタン)
設置したスピンボタンを右クリックして「コントロールの書式設定」を開き、
「コントロール」タブの「リンクするセル」に印刷範囲外の開いているセルを指定する。(D5など)

そして印刷範囲にOFFSET関数を使ってデータを参照する数式を作成する。
「住所」を表示させるセルには、住所を示すセルを、
「氏名」を表示させるセルには、氏名を示すセルを、
それぞれ参照させるようにする。
この時、行を指定する引数にスピンボタンのコントロールで指定した「リンクするセル」を指定する。
 F2(住所)=OFFSET(A1,D5,0)
 F3(氏名)=OFFSET(A1,D5,1)
のようにする。
※OFFSET関数でどのように参照されるセルが決定されるのか、ヘルプなどを参考に確認しておくこと。

あとはスピンボタンをポチポチクリックするだけで住所を選択できる。


・・・
ここで示した数式は、あくまでも例です。
実際に使うときには自身で使うデータベース(住所録)や作成した印刷用のフォームに合わせて書き換えてください。

なお、他のシートのセルを参照するには、普通はセル番地を直接指定しますが、
 シート名+!+セル番地
のように指定します。
 =A1
  ↓
 =会員一覧表!A1
のようになります。
これを使えば、他のシートに印刷用のフォームを作ることができます。
「VBAを利用して宛名ラベルを作りたい」の回答画像2
    • good
    • 0
この回答へのお礼

ありがとうございます。お答えを参考にがんばってみます!

お礼日時:2016/10/14 10:23

自分ならVBAではなく、印刷用のフォームを作成して「フォームコントロール」を使って印刷するデータを選択後に印刷を行うようにする。


これならマクロを使わないのでバージョンによるVBAの相違を気にすることなく、「フォームコントロール」をサポートしているバージョンすべてで使用可能です。
(スピンボタンを使って、OFFSET関数で参照する行を指定してデータを抽出します)

VBAを使うことを目的としているのでしたら他の方の回答を待ちましょう。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
そんな方法があったのですね。Excelでラベル作成=VBAでした。
ちなみにフォームコントロールを使う方法はどういったものでしょうか。
調べてみましたがいまいちわからず・・・
図々しく申し訳ございませんが、どうぞよろしくお願い致します。

お礼日時:2016/10/13 16:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報