株式会社大庭工務店 井上書店 栢野建設株式会社


ソフトウェアの部屋 一覧に戻る
投稿番号:100187  投稿日:2002年06月30日 10時59分03秒 パスワード
お名前:木下栄三

Excelからラベル印刷はできない?

キーワード:エクセルラベルプリント
ソフトの種類 :ビジネス

初めて利用させて頂きます。
Excelの表の一部をラベルシートに抜き出して印刷したいのですがうまくできません。
「宛名書きソフト」のように細かな印刷設定がExcelから抜けずにしたいのです。
良い方法がありましたらおしえてください。

[1]ah_01さんからのコメント(2002年06月30日 20時45分00秒 )
パスワード
EXCELのVBA機能を使えば可能だけれど
自由度と引き換えに難易度もそれなりに高いから
>Excelから抜けずにしたいのです
にあまりこだわることはお勧めではないかも。

[2]Ko-Chanさんからのコメント(2002年07月01日 00時32分00秒 )
パスワード
>Excelの表の一部をラベルシートに抜き出して印刷したいのですがうまくできません。

できたら、どこがうまくいかないのか具体的に書いて欲しいんですけど。
#もしかして、1から10あったら、それ全部?


>「宛名書きソフト」のように細かな印刷設定

これがどれほどの細かな設定を言っているのかわかりませんが、
データが規則正しくずらっと並んだ表からデータを取ってきて、
印刷フォーマットに整形するだけなら、VBAなど使わずとも
INDEX関数でできますよ。

文字だけで説明するのはとっても難しいんですけど、
たとえば、住所録みたいな表から、郵便番号、住所、氏名などを
印刷するとして、簡単に説明すると...
1.住所録シートのA、B、Cの各列に、郵便番号、住所、氏名が
  ずら〜っと入力されているとします。
  (各項目のラベルは無いものとして説明します)
2.ラベルシート中の印刷範囲外にページ番号を入力するセルを用意。      (以下、ページ番号)
3.入力されたページ番号から、ラベルシートの1つ目に印刷される
  住所録データの行番号を求めます。
  例えばラベルシート1ページ当たり3枚印刷するなら、
  =(ページ番号 - 1) * 3 + 1 で求まります。(以下、行番号)
  (場所はどこでも。見栄えが悪いなら、非表示にしちゃうとか)
4.印刷する項目をINDEX関数で取り出します。
  印刷する位置のセルに、以下の計算式を入力します。
  【ラベル1個目】
  =INDEX(住所録!A:A, 行番号) <==郵便番号を取ってくる。
  =INDEX(住所録!B:B, 行番号) <==住所を取ってくる。
  =INDEX(住所録!C:C, 行番号) <==氏名を取ってくる。
  【ラベル2個目】
  =INDEX(住所録!A:A, 行番号+1)
  =INDEX(住所録!B:B, 行番号+1)
  =INDEX(住所録!C:C, 行番号+1)
  【ラベル3個目】
  =INDEX(住所録!A:A, 行番号+2)
  =INDEX(住所録!B:B, 行番号+2)
  =INDEX(住所録!C:C, 行番号+2)

こんな感じで作れば、ページ番号を入力するだけで、
印刷フォーマットのデータが次々切り替わるようになります。

#って、わかりにくい説明を長々と書いたけど、
#やりたいことは、こんなので良かったのでしょうか?

[3]木下栄三さんからのコメント(2002年07月01日 21時35分51秒 )
パスワード
さっそくのアドバイスを頂きありがとうございます。
たぶん、だめなんだろうとの思い込みからの投稿だったので、おおざっぱな質問のしかたになってしまってゴメンなさい。
具体的には次のような操作がしたかったのです。
-----------------------------------------------------------------------
A B C D E
1 [名 称] [数量]
2 [abc] [ 3 ]
3 [def] [ 1 ]
4 [ghi] [ 2 ]

-----------------------------------------------------------------------
上のような表をA4のタックシールシート(90片×横2列×縦45枚)に印刷します。
-----------------------------------------------------------------------
名 称 数量 名 称 数量
abc 1/3 abc 2/3
-----------------------------------------------------------------------
名 称 数量 名 称 数量
abc 3/3 def 1
-----------------------------------------------------------------------
名 称 数量 名 称 数量
ghi 1/2 ghi 2/2
-----------------------------------------------------------------------
シールの縦枠がうまく表示できないので省きますが、こんなふうにシール6枚に印刷
したいのですが。
[数量]の印刷内容が変化させてあるのは、[数量]のデータに応じた枚数のシール
が欲しいのと、何個口の何番目かを印刷したいからです。

このデータ変換は、同じシートのなかに『=IF(B2>1,CONCATENATE("1/",B2),"")』
とゆうような関数をセルごとに数値を変えて貼り付けてつくりました。
この方法ではセルの無駄使いと思いますが、ここにたどり着くまで4〜5日かかりま
した。(-_-;)
これで印刷データは揃ったと思いましたが、どうやって印刷位置の指定をすれば良い
のかがわかりませんでした。

ah_01さんの >EXCELのVBA機能を使えば・・・ は、その難易度に負けました。
そして、Excel内での処理にこだわったのは、自分以外の人にラベルを作ってもらう
ときに操作が少ないほうが説明しやすいと考えたからです。

Ko-Chanさんからの >・・・INDEX関数でできますよ。・・・ の内容を理解できるように今
から実際にやってみようと思います。
また、"「宛名書きソフト」のように細かな印刷設定" とは、小さなラベルシートの
一片の中に、先のような内容がバランス良く印刷できれば良いのですが・・・

フォントがずれて見ずらくなったらすみません。
以上の説明から、さらにアドバイス頂けるようでしたらお願い致します。

[4]木下栄三さんからのコメント(2002年07月01日 21時54分11秒 )
パスワード
投稿してみたらスペースであけた空白がすべてつながってしまいました。
とりあえず"."を使って間隔を取りましたが辛抱してください。m(__)m

具体的には次のような操作がしたかったのです。
--------------------------------------------------------------------
......A........B........C.......D.......E
1 [名 称] [数量]
2 [abc] [ 3 ]
3 [def] [ 1 ]
4 [ghi] [ 2 ]

--------------------------------------------------------------------
上のような表をA4のタックシールシート(90片×横2列×縦45枚)に印刷します。
--------------------------------------------------------------------
.名 称...数量........名 称...数量
abc..1/3......abc..2/3
--------------------------------------------------------------------
.名 称...数量........名 称...数量
abc..3/3......def.. 1
--------------------------------------------------------------------
.名 称...数量........名 称...数量
ghi..1/2......ghi..2/2
--------------------------------------------------------------------

(すみませんが、空白の作り方も教えてください!!)

[5]Ko-Chanさんからのコメント(2002年07月02日 21時31分39秒 )
パスワード
ワタシの考えていたものとちょっと違うようですね。
元になる表が以下のようになっていれば、INDEX関数が使えると思います。
    A     B
1 [名 称]  [数量]
2 [abc] [ 1/3 ]
3 [abc] [ 2/3 ]
4 [abc] [ 3/3 ]
5 [def]  [ 1 ]

でも、abcのデータは1行しか入力されていないんですよね?
こうなると、VBAの出番かなぁ...

[6]木下栄三さんからのコメント(2002年07月03日 06時59分50秒 )
パスワード
B列に入力されたデータをもとに、C列以降に自動展開しました。
    A     B      C D     E     F
1 [名 称]  [数量]
2 [abc]  [ 3 ]  [ 1/3 ][ 2/3 ][ 3/3 ]
3 [def]  [ 1 ]
4 [ghi]  [ 2 ]  [ 1/2 ][ 2/2 ]


そしてこの表をSheet2のセルにINDEX関数を使って整列しなおして
印刷したところ、とりあえずシ−ル印刷ができました。

いくつか残る問題として、
1.B列の数値に上限がある。(現在、C〜Kまでの9個以下)
2.B列数値に応じて、ラベルに空白ができないようにデータの前詰め処理が必要。
3.ラベルの途中からでも印刷できるように、出力開始位置の指定をしたい。

INDEX関数によって、手掛かりがつかめた気がします。同時に意欲も頂きました。
他の関数と組み合わせて、どこまでできるかやって見ます。



[7]akmさんからのコメント(2002年07月08日 23時58分02秒 )
パスワード
エクセルの関数だけでは無理じゃないでしょうか。
関数だと、セルに関数を書いて計算結果を表示させるしかありませんから、
複雑な作業(たとえば印刷位置を出力サイズに応じて変化させる)は、
その分複雑な関数を書く必要があるわけです。
#セルa1が’A’の場合は’AA’の計算を、’B’の場合は’BB’を・・・
#条件が多くなればなるほど式が長くなります。
それに複雑な関数は、修正が大変ですよ。

もし、時間的な余裕があればやはりVBAをお勧めしたいです。
VBAを勉強するのに「かんたんプログラミング EXCEL2000VBA」
大村あつしさん著(技術評論社)をお勧めします。
プログラム言語が初めての方には少々とっつきにくいかもしれませんが、
いくつかの命令(最初は10個くらいでも)を理解するだけで、関数では
実現できなかった機能ができるようになります。

わからないことがあれば、また書き込んでいただければ、可能な限り
お答えします。
VBAファンが増えるのはうれしいので。

[8]木下栄三さんからのコメント(2002年07月10日 21時18分19秒 )
パスワード
akmさんの言はれるように、VBAをめざす事にしました。

早速、「大村あつしさん著・・・」を書店に問い合わせたところ在庫し
ているとのことでしたので買ってきました。

なんと、技術評論社の同シリーズは「基礎編」「関数編」「応用編」
そして「マクロ編」と、4冊もあるんですね。
とりあえず、前の2冊を購入しました。
ほど良い図解とヒント・コラムなどで、これなら後の2冊までくじ
けずに続けられるような気がします。

気ながに取り組もうと思っていますので、質問の投稿をしたときには、
ぜひまた助言などおねがいします。

 【 ソフトウェアの部屋 一覧に戻る


株式会社 大津屋 チップスサーチエンジン 尚美堂


この投稿に対するコメント
コメント:

HTMLタグは使えません。改行は反映されます。
http://xxx.xxx/xxx/xxx や [email protected] のように記述すると自動的にリンクがはられます。

お名前:(省略不可)
削除用パスワード:(省略不可8文字以内)
メールアドレス:(省略不可)
URLアドレス:
 ホームページをお持ちの方のみ、そのURLアドレスを記入してください。



チップス

Copyright(C) 2000 Tips. All Rights Reserved.◇  DB-BBS-system V1.20 by Rapha.