アプリ版:「スタンプのみでお礼する」機能のリリースについて

差し込み印刷について伺います。
エクセルでデータファイルを作り、ワードで印刷するものです。

エクセルファィル
鈴木 辞典 1冊
鈴木 新書 2冊
佐藤 週刊 1冊
佐藤 専門 3冊

ワード
鈴木さんの購入した本は以下の通りです。
 辞典 1冊
 新書 2冊

というように、複数のレコードを氏名ごとに1枚の通知文にしたいと考えています。
フィールドコードなどで、名前を判断し改ページができるような方法があれば教えてください。
 

A 回答 (4件)

#2です。

補足ありがとうございます。
>複数レコードを1ページとして印刷(しかも、名前ごとに)するところがなかなか難しいです。
>名前(前のレコード)と名前(今のレコード)を比較する関数(?)やデータを格納できる任意の変数があればよいと思うのですが・・・。
おしゃることは良く判ります。ワードのフィールドでの回答が出れば良いのですが、まず難しいでしょう。私も勉強させてほしいのですが。しかしOKWEBを見つづけて3年、これに類した質問回答は今までありませんでした。
○私のお勧めに対しての反応は今一つですが、下記をやって見てください。いろいろ応用が効きます。
(データシート)Sheet1のA2:C5に
鈴木辞典1冊
鈴木新書2冊
佐藤週刊1冊
佐藤専門3冊
氏名順にソートしてあること。
(印刷物シート)Sheet2の
C3に「さんの購入した本は以下の通りです。」
と文言をいれます。B2に「注文書」とかいれるのも
不動文字は自由です。C4:D18は注文明細のために
空白にしておいてください。
(プログラム)
ツール-マクロ-VBEでVBE画面に変ります
その画面で-挿入-標準モジュール
で出てきた画面に下記を貼りつける。
Sub test01()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
'----A
Set sh1 = Worksheets("Sheet1")
Set sh2 = Worksheets("Sheet2")
'-----B
d = sh1.Range("A2").CurrentRegion.Rows.Count
MsgBox d
j = 5
'---第1データ分セット
m = sh1.Cells(2, "A")
sh2.Cells(3, "B") = m
sh2.Cells(4, "C") = sh1.Cells(2, "B")
sh2.Cells(4, "D") = sh1.Cells(2, "C")
'-----第2行以下処理
For i = 3 To 1 + d
If sh1.Cells(i, "A") = m Then
'-----名前前行と同じ
sh2.Cells(j, "C") = sh1.Cells(i, "B")
sh2.Cells(j, "D") = sh1.Cells(i, "C")
j = j + 1
Else
'------名前前行と変ったとき印刷とクリア
sh2.Range("A1:f20").PrintOut
sh2.Range("c4:d18").ClearContents
'-------名前変化後分のデータセット
m = sh1.Cells(i, "A")
sh2.Cells(3, "B") = m
sh2.Cells(4, "C") = sh1.Cells(i, "B")
sh2.Cells(4, "D") = sh1.Cells(i, "C")
j = 5
End If
Next i
sh2.Range("A1:f20").PrintOut
End Sub
プリンタに上をセットして
そしてメニューの実行-SUB/ユーザー・・をクリック。
(結果)
鈴木さんの購入した本は以下の通りです。
辞典1冊
新書2冊

佐藤さんの購入した本は以下の通りです。
週刊1冊
専門3冊
の2枚の紙がプリンタから出てきます。
1人15冊以上注文がある場合は手直しが必要ですが、今回は略。
    • good
    • 1
この回答へのお礼

アドバイスありがとうございます。
WORDへの差込印刷だけしか思いつかなかったのですが、EXCELのマクロがあったとは目から鱗です。
早速試してみます。

お礼日時:2004/07/06 19:51

Accessを使えるなら早いように思いますが、エクセルデータファイルをワードで差し込み印刷となると、、意外に難しいですね。

NO.1の方の補足にありました、元ファイルを変更すると他へ影響があるとのことですが、コピーしてもう一つ同様のファイルを作ってから加工するとか、エクセルのピボットテーブルで、ページエリアに購入者名を配置し、ページごと表示にすれば、あっという間に、個人集計が可能となるかと思います。説明下手ですみません。参考になれば。
    • good
    • 0

小生は判ってないのですが、質問への直接の回答でなくて済みません。


(1)フィールドコードなどで
おっしゃる通り、挿入-フィールド-フィールドの名前
に出てくるIfやNext(Record)などの英語の
語句を駆使すると、お望みの処理が出来るらしいとかねてから睨んでいて関心があります。
一種のプログラムを組むようなものでしょう。フィールド
コード自体がワードの中で異色な感じがします。
しかし、解説した書籍やWEBサイトがなくて、判らずじまいです。1000ページぐらいのワードの本数冊にも、あまり記述がありません。
(2)それで
ワードで差し込み印刷せず、エクセルVBAで処理する方
法もあることを御紹介します。
印刷物をデータ記録シートと別シートにして、名前が変るまで同一印刷シート次行にデータをセットし名前が変るとシートを印刷します。
ラベル印刷の例が殆どですが、過去に何度も質問があります。
http://okweb.jp/kotaeru.php3?qid=797145などの小生の回答を参考にご覧下さい。
印刷シートをエクセルのシートで設計してデータをセットするセルを決めて貰うこと、データシートで名前の入っている列や、印刷する項目列を教えてもらえれば、15行程度のVBAプログラムで、エクセル内の処理が出来ます。

この回答への補足

アドバイスありがとうございます。
複数レコードを1ページとして印刷(しかも、名前ごとに)するところがなかなか難しいです。
名前(前のレコード)と名前(今のレコード)を比較する関数(?)やデータを格納できる任意の変数があればよいと思うのですが・・・。

ワード
鈴木さんの購入した本は以下の通りです。
 辞典 1冊
 新書 2冊
++改ページ+++++++++++++
佐藤さんの購入した本は以下の通りです。
 週刊 1冊
 専門 3冊

補足日時:2004/07/06 14:56
    • good
    • 0

データファイルを修正されたらいいですよん。


鈴木 辞典 1冊
鈴木 新書 2冊
佐藤 週刊 1冊
佐藤 専門 3冊
ではなく、
   辞典 新書
鈴木 1冊 2冊
佐藤 1冊 3冊
そして、差込印刷の設定したらOKです。
    

この回答への補足

アドバイスありがとうございます。

実際のデータは行700、列10のデータです。
なかなか、元のファイルを加工するのは他への影響もあり、なかなかできない状況です。

補足日時:2004/07/06 14:45
    • good
    • 0

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