今だけ人気マンガ100円レンタル特集♪

エクセルを使って差込印刷をする方法を教えて下さい

町内会で使用する定形の用紙に住所録を印刷します。
一行(レコード)に通し番号・班番号・氏名・TEL・住所
が入力された、住所録データがあります。

このデータを元に定形の用紙に印刷するにはどうすれば
よいのでしょう

あの年賀状をはがき印刷する要領で住所録にあるデータを一気に印刷したいのですが
マクロが最適なんでしょうか・・・

このQ&Aに関連する最新のQ&A

A 回答 (3件)

再びこんにちは。



下記の仮定に基づくサンプルです。実際にプリントアウトテストはしてません。
シート名Sheet1にリストがあり、A2~Axx行まで通し番号データがある。
シート名Sheet2のB1に通し番号を連続代入する。

Sub aa()
With Worksheets("Sheet1")
 For i = 2 To .Range("A65536").End(xlUp).Row
  Worksheets("Sheet2").Range("B1") = .Range("A" & i)
  'Worksheets("Sheet2").PrintOut
 Next i
End With
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます。
このマクロを参考にテストプリントしてみました。

成功です。
後は必要なセルにVLOOKUP関数を入力していけば何とか
なりそうです。

目処が立ってきましたありがとうございました。

お礼日時:2003/04/07 01:24

こんにちは。



定型用紙はWordで作り、Wordの差し込み印刷でデータ元をExcelにした方が簡単です。

Excelだけでやるなら、定型用紙シートの任意のセルに通し番号を入れ、他のフィールドはそのセルを参照したVLOOKUP関数を入れる。

連続でやるには、通し番号を次々に入れて印刷をかけるマクロが必要だと思います。
    • good
    • 0
この回答へのお礼

VLOOKUP関数を使用するのは何となく理解できます。

>通し番号を次々に入れて印刷をかけるマクロが必要だと思います。

このマクロを教えていただけませんか

お礼日時:2003/04/07 00:48

挿し込み印刷はMS-WORDにはあるけど、MS-EXCELにもありましたっけ?


新しいバージョンにはあるのかな?私のEXCEL98にはありません。

私は区の役員をしていますが、いつも文章はMS-WORDで作り、MS-EXCELで住所録を作っておいて挿し込みます。

この回答への補足

挿し込み印刷はEXCELに無いと思います。
恥ずかしながら、WORDを使った事がなく町会費などを
エクセルに入力しています。

住所録もエクセルを使っています。
そこでこのデータを元にマクロでワードのように差込印刷をしたいのですが・・・・

どのようにすればよいのでしょう

補足日時:2003/04/07 00:44
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qexcelからexcelへの差し込み印刷

お世話になります。

excelでwordへの差し込み印刷をよく利用するのですが、
同様に、
excelのデータをexcelに流し込んで印刷する方法はありますでしょうか。

excelの名簿のデータを
excelの表のフォーマットに流し込んで
1人づつ印刷したいのですが。

お分かりの方いらっしゃいました教えてください。
どうぞ宜しくお願い致します。

Aベストアンサー

イメージはわかるが、エクセルに差込印刷の機能はありません。
ワードなどと違ってA.X氏1人分書類シート作成、B印刷、Aのシートををy氏分のデータでシート内容(セル)を置き換え、印刷、の繰り返しをします。
ーー
例データ Sheet1 A1;D3
連番氏名住所品物
1山田 三郎東京都江東区かばん
2植田 健横浜市港北区帽子
A列はこのたび連番を振りました。
Sheet2   に送り状の書式を体裁よく作ります。
H1セル(どこでも良いが、下記のVLOOKUPの式は変わる)

送り状

住所X
氏名Y

品物Z

上記の品をお送り申し上げます。
ご査収ください

以上
Xの場所のセルに =VLOOKUP($H$1,Sheet1!$A$1:$D$3,2,FALSE)
Yの場所のセルに =VLOOKUP($H$1,Sheet1!$A$1:$D$3,3,FALSE)
Zの場所のセルに =VLOOKUP($H$1,Sheet1!$A$1:$D$3,4,FALSE)

---
結果

送り状

住所山田 三郎
氏名東京都江東区

品物かばん

上記の品をお送り申し上げます。
ご査収ください

以上
ここで
VBE画面で標準モジュールに
Sub test01()
For i = 1 To 2 '人数分
Range("H1") = i
Range("A1:G20").PrintOut '印刷範囲は各人同じとする
Next i
End Sub
を張り付け、実行する。
山田、植田分の紙が2枚印刷されました。
これは質問者はVBAの経験も無いでしょうと、最低限にしてあります。
VBAを勉強してください。
別ブックにある名簿を対象などは複雑になるので避けています。

イメージはわかるが、エクセルに差込印刷の機能はありません。
ワードなどと違ってA.X氏1人分書類シート作成、B印刷、Aのシートををy氏分のデータでシート内容(セル)を置き換え、印刷、の繰り返しをします。
ーー
例データ Sheet1 A1;D3
連番氏名住所品物
1山田 三郎東京都江東区かばん
2植田 健横浜市港北区帽子
A列はこのたび連番を振りました。
Sheet2   に送り状の書式を体裁よく作ります。
H1セル(どこでも良いが、下記のVLOOKUPの式は変わる)

送り状

住所X
氏名Y

品物Z

...続きを読む

Qエクセルから帳票形式に差込印刷したいのですが

皆さん初めまして!

エクセルで1万件に近いデータがあります。

これらを帳票形式に差込印刷したいと思えば、ワードの「差込印刷」機能以外に、エクセル自体で行なうことは不可能でしょうか?

(例:請求データを請求書フォームに印刷)

ワードの差込印刷は便利ですが、エクセルデータ形式(特に金額のカンマ区切り表示が必要なため)を参照する際は、フィールド設定の数の制限が22列まで?で・・・行き詰っています(私は約40列あります)。

エクセル・ワードの操作は上級手前の操作まではいけますが、
エクセルでVBA、差込印刷マクロを作るとまではいけないもので・・・何か妙案がありましたらご教示願います・・・

Aベストアンサー

#01です。出血大サービスです(^^;
ただし不具合以外の修正はご自身でお願いします。
2行目~4行目と項目の定義の箇所は再度設定し直してください。

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub InsPrint()
Const org As String = "Sheet1" '元データのシート名
Const prs As String = "Sheet2" '印刷するシート名
Const strt As Integer = 2 '元データの実データ開始行
Dim idx, fromL, toL As Long
Dim oSht, pSht As Worksheet
Dim res, res2
 Set oSht = Worksheets(org)
 Set pSht = Worksheets(prs)
 res = MsgBox("印刷行範囲を指定しますか?" & Chr(13) & _
  "はい:指定する、いいえ:指定しないで全件印刷、CANCEL:印刷しない", vbYesNoCancel)
 Select Case res
  Case Is = vbCancel
   Exit Sub
  Case Is = vbYes
   res2 = Application.InputBox("印刷開始行を半角数字で入力して下さい", Type:=1)
   If TypeName(res2) = "Boolean" Then
    MsgBox "印刷を中止しました", vbOKOnly
    Exit Sub
   Else
    If res2 >= strt And res2 <= oSht.Range("A65536").End(xlUp).Row Then
     fromL = res2
    Else
     MsgBox "開始行が不適切です。印刷を中止しました", vbOKOnly
     Exit Sub
    End If
   End If
   res2 = Application.InputBox("印刷する最終行を入力して下さい" & Chr(13) & _
     "99999を入力すると最終行まで印刷します", Type:=1)
   If TypeName(res2) = "Boolean" Then
    MsgBox "印刷を中止しました", vbOKOnly
    Exit Sub
   Else
    If res2 = 99999 Then
     toL = oSht.Range("A65536").End(xlUp).Row
    Else
     If res2 >= fromL And res2 <= oSht.Range("A65536").End(xlUp).Row Then
      toL = res2
     Else
      MsgBox "最終行が不適切です。印刷を中止しました", vbOKOnly
      Exit Sub
     End If
    End If
   End If
  Case Else
   fromL = strt
   toL = oSht.Range("A65536").End(xlUp).Row
 End Select

 For idx = fromL To toL
'以下の行を項目数だけコピーして定義する
  pSht.Range("A1").Value = oSht.Cells(idx, "A").Value
'
  pSht.PrintOut '印刷
'5頁につき8秒休止する
  If (idx Mod 5) = 0 Then
   DoEvents
   Sleep 8000
  End If
 Next idx
End Sub

#01です。出血大サービスです(^^;
ただし不具合以外の修正はご自身でお願いします。
2行目~4行目と項目の定義の箇所は再度設定し直してください。

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub InsPrint()
Const org As String = "Sheet1" '元データのシート名
Const prs As String = "Sheet2" '印刷するシート名
Const strt As Integer = 2 '元データの実データ開始行
Dim idx, fromL, toL As Long
Dim oSht, pSht As Worksheet
Dim res, res2
 Set oSht = Works...続きを読む

Qエクセルで差込印刷をしたいのですが?

ワードの文章に、エクセルのデータを差込印刷するように、エクセルの文章(実際は個票のような表形式)にエクセルのデータを差込印刷したいのですが、どうすればいいのですか?

実際は、印刷したい表のタイトル欄に、データ表の中からnameの列のデータを差込印刷したいのです。

過去のを全て検索できていませんが、よろしくお願いします。

Aベストアンサー

データ例
Sheet1
データ部に連番を振っておきます(必須)。
連番購入者住所品名価格
1木田 次郎京都市テレビ150000
2山田 太郎大阪市パソコン130000
3上田 健太郎名古屋市ドライヤ5000
4恩田 雅夫浜松市デジカメ40000
5坂田 俊夫岡崎市クーラー120000

Sheet2  単票の例
(Sheet2)
()内はセル番地を説明のため入れてます。場所がわかれば()内は除いて
ください。基本的には項目内容と見出しの配置は自由です。
どこでも良いがG1を番号指定用に確保します。
-----------------------------------
送り状(C3)

住所(B5)(C5)
お名前(B6)(C6)様(D6)

お買上げ品(B8)

品名(B10)(C8)
価格(B11)(C9)
-----------------------------------------
C5に=VLOOKUP(G1,Sheet1!A3:D10,3,FALSE)
C6に=VLOOKUP(G1,Sheet1!A3:E10,2,FALSE)
C10に=VLOOKUP(G1,Sheet1!A3:E10,4,FALSE)
C11に=VLOOKUP(G1,Sheet1!A3:E10,5,FALSE)
を入れます。
(結果)
(Sheet2)

送り状(C3)

住所   京都市
お名前  木田 次郎様

お買上げ品

品名   テレビ
価格   150000
Sheet2の罫線・文字書式や列幅・行高は工夫してください。
不動文字は入れても影響なし。
(利用方法)
これを印刷し、
G1の値を2にする。
すると山田太郎の書類になる。印刷する。
G1に3を入れる。上田健太の書類になる。これを印刷するを繰り返す。
必要ない人は飛ばせるのはわかりますね。
(問題点)
多数や全員印刷するときは面倒。
この問題は関数では解決しない。
(マクロ)VBAを勉強する必要がある。
自動でG1を1づつ増やして、印刷するを繰り返すプログラムを組む。
Sub test07()
Worksheets("Sheet2").Select
For i = 1 To 3
Range("G1") = i
Range("A1:D11").PrintOut
Next i
End Sub
For i = 1 To 3の3は実際のデータ行数に変えてください。
上記はわざと最大限やさしいVBAにしてます。こうしたいという要求はVBAを勉強して実現してください。
("A1:D11").はSheet2の帳票の印刷部分全体を表わしてます。
Sheet2のようなものを作らず、全部をVBAで作れます。しかし関数と組み合わせるのも判りやすいという良さがあるかと思って紹介します。(テスト済み)

データ例
Sheet1
データ部に連番を振っておきます(必須)。
連番購入者住所品名価格
1木田 次郎京都市テレビ150000
2山田 太郎大阪市パソコン130000
3上田 健太郎名古屋市ドライヤ5000
4恩田 雅夫浜松市デジカメ40000
5坂田 俊夫岡崎市クーラー120000

Sheet2  単票の例
(Sheet2)
()内はセル番地を説明のため入れてます。場所がわかれば()内は除いて
ください。基本的には項目内容と見出しの配置は自由です。
どこでも良いがG1を番号指定用に確保します。
-------------------------...続きを読む

Qエクセルで重複しているデータの抽出のしかたを教えてください。

エクセルで重複しているデータを抽出したいのですが・・。なにぶん初心者なもので簡単な方法があればよいのですが・・。
A列に日付 B列に企業名このデータが300件ほどあります。

 Å列      B列
1月 1日    AAAA社
1月 4日   BBBB社
1月 8日   CCCC社
2月 1日   BBBB社
2月20日    DDDD社
3月 2日   AAAA社

と、あるとしてB列の企業名が重複しているものを抽出したいのですが・・・。この場合 AAAA社とBBBB社ですが。
これを簡単に抽出する方法はないでしょうか?
教えてください お願いいたします。

Aベストアンサー

企業名がセルB2からセルB300まで入力されていると仮定します。
セルC2に IF(COUNTIF($B$2:B2,B2)>1,"*","") を入力し、セルC300までコピーして下さい。すると重複したデータの二番目以降に "*" のマークが付きます。
(注) 数式を下のセルまでコピーするため、COUNTIF($B$2 は絶対参照にして下さい。

Qエクセル コピーしたデータを1行おきに貼り付け

エクセル2003を使っております。
コピーしたデータを1行おきに貼り付けたいのですがやり方がわかりません。あと、1つのセルに対して2行ごとに結合したいのですがどのようにすればいいのか。教えてください。よろしくお願いします。

Aベストアンサー

>1行おきに空白があるデータがありまして、それにコピーしたデータ
を貼り付けたいのです。
あいまいにならないように、実例を質問に挙げること。
例えば
コピー先 -は空白行を示す(1)は行番号
A列
(1)12
(2)ー
(3)15
(4)ー
(5)8
(6)ー
(7)5
ーー
(A)上記のーのセルに
(B)1回の操作で
貼り付けたいのだな。
ーー
ここへコピー元はどういうデータですか。
D2:D8に(-は空白セル)
a

b

c

d
なら
D2:D8をコピー
A2を選択
編集ー形式を選択して貼り付け
空白を無視する、にチェック
で貼り付け。
ーーー
結果
12
a
15
b
8
c
5
d
こんなことか?。質問の書き方をむしろ勉強してほしい。

Qワード、縦の不ぞろいの解消法

ワードを使っていて、文字が縦に揃わなくて困ることがよくあります。たとえば行頭で少し字下げ下状態で箇条書きで並べたいような場合ですが、同じ行に半角と全角とか、さらにスペースとかイタリクスとか、あれこれ入れると、行頭とか、あるいは途中で縦をそろえたいところが微妙にずれます。これをきれいに調整するやり方があれば教えてください。

Aベストアンサー

「イタリクス」という表現を見ていると、tacobeさんが、途中で英語などを使い、MSPタイプのフォントを使わざるを得ない場合がありそうですね。
(これの必要がない場合、最も簡単なのはNo.3で回答済みです)

私の場合ですが、罫線の種類を「罫線なし」にして「見えない罫線」を引きます。
これは枠が印刷されないので、私はかなり便利に使っています。

打ってしまってから途中で揃える場所が決まると、文字を移すのがかなり面倒ですが、
あらかじめ枠が決まっているのであれば先に枠を決めてしまいます。
その区切りが必要ない場合は上下に分割して、要らない線を消しゴムで消せばいいので、かなり融通は利くと思います。
(この方法ならば、揃えたい場所が行内に何ヶ所あってもOK)

文字の出だし(これは途中で揃えたい場合も含みます)を変えたい場合も、
その動かしたい線のちょうど上にマウスが来るとマウスポインタの模様が変わるので、
そのときに左クリックしてドラッグすると、簡単に動かせます。

参考URLで、想定できることを何個か作ってアップしてみました。
(IEでご覧の場合は、直接Wordに切り替わるはずです)

参考URL:http://www2.plala.or.jp/ryutaro/goo/200106030717.doc

「イタリクス」という表現を見ていると、tacobeさんが、途中で英語などを使い、MSPタイプのフォントを使わざるを得ない場合がありそうですね。
(これの必要がない場合、最も簡単なのはNo.3で回答済みです)

私の場合ですが、罫線の種類を「罫線なし」にして「見えない罫線」を引きます。
これは枠が印刷されないので、私はかなり便利に使っています。

打ってしまってから途中で揃える場所が決まると、文字を移すのがかなり面倒ですが、
あらかじめ枠が決まっているのであれば先に枠を決めてしまいま...続きを読む

Q「該当」と「当該」の違い

辞書には、「該当」・・・その条件にあてはまること。「当該」・・・その事に関係がある。
・・・とあります。
“あてはまる”と“関係がある”、微妙に違うようで似ているようで、お恥かしいのですが私にははっきり区別ができないのです。
該当とすべきところを当該としたら、意味はまったく違ってくるでしょうか?
わかりやすく両者の違いや使い方を解説していただけませんか?宜しくお願いします。

Aベストアンサー

よく似た意味の言葉(名詞)ですが、

○該当…「する」をつけて「当てはまる」という意味の動詞として用いることができる

○当該…主に他の名詞の前につけて「今議論の対象になっている、まさにそのもの」という意味で内容を限定する形容詞的な形で用いる

といった違いがあります。逆の用法はありません。

・この条件に当該する人は申し出てください。

・○○事件につき、該当被告人を有罪に処す。

いずれもおかしな使い方で、反対でないとアウトです。

ご参考になれば幸いです。

QVLOOKUP関数で空白を選択すると「0」と表示されるのですが

VLOOKUP関数で他シートのアドレス帳から住所名前等を引き出し、別シートで宛名ラベルを作っています。
この時、何も記入されていないシートをVLOOKUPで読み込んだ場合に、宛名に「0」が表示されてしまうのですが、これを表示させない方法はどうしたらよいのでしょうか?

また以前は「0」では無く、「N#A(記憶が曖昧ですが)」のような表示がされていたんですが、どうして変ったんでしょううか?

よろしくお願いします。

Aベストアンサー

検索値が見つからない場合は #N/A エラーになります。
検索値が見つかったが、参照する列が空白の場合は 0 になります。

ISERROR や ISNA 等を使ってエラーの場合は空白にすれば、#N/A は表示されなくなります。
例)=IF(ISERROR(VLOOKUP($A2,検索範囲,2,0)),"",VLOOKUP($A2,検索範囲,2,0))

この状態で ツール-オプション-表示タブの「ゼロ値」を外せば #N/A も 0 も見えなくなります。
ただし、検索結果以外の 0 も見えなくなりますのでそれがまずいようなら、

=IF(ISERROR(VLOOKUP($A1,検索範囲,2,0)),"",IF(VLOOKUP($A1,検索範囲,2,0)=0,"",VLOOKUP($A1,検索範囲,2,0)))

のような感じにすると#N/A も 0 も見えなくなります。

Q特定の文字列を含むセルの個数をカウントしたい

こんにちは。
現在、シフト表作りを任されているのですが、特定の文字列(個人名)を含むセルの個数をカウントして、表内のコマ数をカウントしたいと考えています。

表の名前は、セルの名前登録をしてありますので、ここでは仮に"表"とします。
特定個人の名前は、"名前"とします。
この条件下で、上記を行うにはどのようにすればよいでしょうか?

ご助言お願いします。

Aベストアンサー

no1です。
てっきり「表」という事で早合点していました、お詫びします。
安直ですが、検索範囲を適用範囲を含み連続セル範囲指定でお試し下さい。
=COUNTIF(連続セル範囲,"*"&名前セル&"*")

Qエクセル VBAで差込印刷の指定方法を教えてください。

こんにちは。大変お世話になっています。
エクセルVBAを使って差込印刷がしたいのです。
1000位あるレコードの中から、これとこれとこれ・・・というふうに選んで印刷させたいのです。
VLOOKUP関数を使わない方法で、ずっと以前にやったことがあるのですが、忘れてしまいました。

「aiu」というシートにリストがあるとして、転機して印刷したいフォーマットがあるシートを「kakiku」とします。
「aiu」のa列に数字の「1」が入力されてあれば、その行が対象となり、印刷が開始される、といったものです。

「kakiku」のai セルに、「aiu」のg列のデーターを入れたい場合、

n=worksheets("aiu").cells(i+1,2)=1then
worksheets("kakiku").range("a1")=worksheets("kakiku").cells(i+1,7)

このように書いたと思うのですが・・・動きません。
最初の1行になにか問題がありそうな気がするのですが・・・。

すみません、よろしくお願いします。

こんにちは。大変お世話になっています。
エクセルVBAを使って差込印刷がしたいのです。
1000位あるレコードの中から、これとこれとこれ・・・というふうに選んで印刷させたいのです。
VLOOKUP関数を使わない方法で、ずっと以前にやったことがあるのですが、忘れてしまいました。

「aiu」というシートにリストがあるとして、転機して印刷したいフォーマットがあるシートを「kakiku」とします。
「aiu」のa列に数字の「1」が入力されてあれば、その行が対象となり、印刷が開始される、といった...続きを読む

Aベストアンサー

こんにちは。

ThenがあるということはIf文ですね。

If Worksheets("aiu").Cells(i + 1, 2) = 1 Then
Worksheets("kakiku").Range("A1") = Worksheets("kakiku").Cells(i + 1, 7)
End If

これでどうでしょうか。


人気Q&Aランキング