プロが教える店舗&オフィスのセキュリティ対策術

ワードの差し込み印刷ルール「Next Recordについて

36枚の固有ラベルに購入物品名と購入年月日をいれるため、エクセルで表をつくり、差し込み印刷をしようとしましたが、ルールで「Next Record」をつけて、品名と年月日にそれぞれ表示が次々変わるようにしようとすると、以下の図のように、机1~机4の後に、机1の日付がH22.3.4からになり、机5が出てほしい部分は、机8からになっていて、物品も日付も込みの順番になってしまいます。
机1,H22.3.1、机2、H22.3.2、机3、H22.3.3・・・というふうに、物品も日付もそれぞれが順番にでてきてほしいのですが、どうすればよいでしょうか??
ちなみに、ラベル印刷で用紙設定をしてしようかとしましたが、他の文字の間に物品名と日付を入れないといけないので、うまく微調整ができなかったので、行間を調整して、1から作りました。
よろしくお願いいたします。

「ワードの差し込み印刷ルール「Next R」の質問画像

A 回答 (3件)

>それを、1段目の品名1~4、2段目の日付1~4、3段目の品名5~8、4段目の日付5~8


という表示にしたいです。

確認ですが、1つのラベルに品名1と日付1、品名2と日付2、・・・・というように、それぞれのデータに対応するラベルを1枚ずつ作成したいということですよね。

その場合は、すでに回答したように4列9行の「罫線なし」にした表を挿入し、ごく普通に差し込みフィールドを挿入すれば、問題なく順番に差し込みができると思うのですが・・・・(念のため、こちらでも確認しましたが問題なく作成できました)。

#差し込み印刷は、ワードのバージョンによってかなり操作が異なりますので、質問の際にはワードのバージョンを提示するようにしたほうが良いと思います。
    • good
    • 0
この回答へのお礼

何度もアドバイスをありがとうございます。おっしゃるとおり、罫線なしにした表を挿入して、その中に品名と日付を入れると、その中の品名と日付が同じ番号のものになり、次の枠では次の番号の品名と日付になりました!!おかげで望む形のものができて助かりました!!

お礼日時:2010/06/15 23:37

昨日試してみましたが、おっしゃる通りの不具合の再現はできましたが、反応からすると、どうやら、差し込み印刷のNext MergeField を増やすのは、負荷が高すぎて、不可能のような気がします。

ワン・フィールドなら、何の問題もありません。それで、フォームのテキストボックスに、Excelのシートから入れる方法を考えてみました。

フォームのテキストボックスを必要なだけドキュメントに置いて、以下のユーザー設定の部分をご自分で設定し直してください。

テキストボックスの名称等は関係ありませんので、コピー&ペーストで増やしていってください。

>4列×9行あり、1行につき2段使用します。
行数は関係はありませんが、4列ごとに入れ違えで入れ替えていきます。

マクロの注:
・列数の変更は可能です。If Int((i-1)/4) の「4」を換えればよいです。

・気をつけなくてはならないのは、現在使っていて、Excelの差し込み印刷のリンクのついたWordファイルは、使わないほうがよいです。何度もハングさせてしまいました。理由はリンクが二重になるからです。念のために、On Error Resume Next に入れてあります。

・コメント行は、自分自身が、後で分かりにくなる予想のために書いたもので、理解のために書いたものではありません。
・My Documents\My Data Sources\ は、Wordの標準リンク先のですが、できれば、他の場所のほうが良いです。

・遅いと感じるなら、Application.ScreenUpdating = False と Application.ScreenUpdating = True を For ~ Next を挟むようにします。


'ThisDocument のみ

'//
Sub InsertTextBoxesDate()
 'フィールドのテキストボックスにデータを送るマクロ
 Dim xlApp As Object
 Dim DataDir As String
 Dim wb As Object
 Dim buf As String
 Dim i As Long, j As Long, m As Long, n As Long

 '//ユーザー設定
 Const bkNAME As String = "Test1.xls" 'Excelブック名
 Const shNAME As String = "Test" 'Excelシート名
 'Excelのファイルのフォルダ
 DataDir = "C:\Documents and Settings\[UserID]\My Documents\My Data Sources\"
 j = 2 'ExcelのSheet データの2列目-B列(もう片方は、3列目と想定している)
 '//

 On Error GoTo ErrHandler
 Set xlApp = CreateObject("Excel.Application")
 Set wb = xlApp.Workbooks.Open(DataDir & bkNAME)
 m = 1 '行の初期値(変更不要)
 n = 1
 For i = 1 To Me.FormFields.Count 'フィールドの数
   On Error Resume Next '本来は不要です。
  If Int((i - 1) / 4) Mod 2 = 0 Then 'Word 4列づつ 奇数列
   buf = wb.Worksheets(shNAME).Cells(m + 1, j).Value '代入
   Me.FormFields(i).TextInput.EditType wdRegularText, buf
   m = m + 1
  Else 'Word 偶数列
   buf = wb.Worksheets(shNAME).Cells(n + 1, j + 1).Value '代入
   Me.FormFields(i).TextInput.EditType wdRegularText, buf
   n = n + 1
  End If
  On Error GoTo 0
  If i > Me.FormFields.Count Then Exit For 'フィールドが足らない時の安全策
 Next
ErrHandler:
 wb.Close False
 If Err.Number > 0 Then
  MsgBox Err.Description
 End If
 Set xlApp = Nothing
End Sub
    • good
    • 0
この回答へのお礼

すごいものを考えてくださってありがとうございます。今はまだまだ初心者のため、マクロはさっぱりで、コピーして作成しようとしたものの、自分で設定し直しがわからず、断念してしまいました・・・。でも、とても便利そうなので、使えるようになるよう、がんばってみます。

お礼日時:2010/06/15 23:41

画像が小さくて、質問内容がいま一つ把握できていませんが、ブロックごとに次のデータを差し込みたいなら、「罫線なし」の表を作成し、その一番左上のセルに差し込みフィールドを挿入し、そのセルをコピーして、そのフィールドの前にNext Recordフィールドを挿入し、このセルを他のセルにコピー貼り付けしてみてください。

この回答への補足

説明不足ですみません・・・。エクセルのデータが、1~36あり、ラベルは
4列×9行あり、1行につき2段使用します。
1枚目のラベルには、番号1のデータ「机1 H22.3.1」、
2枚目のラベルには、番号2のデータ「机2 H22.3.2」、番号3には・・・と、
番号に対応する品名と日付を入れたいのですが、最初の1~4までのラベルの品名表示は
机1~机4ときちんと表示されるのですが、日付の表示が、ラベル1には番号4の日付が、
ラベル2には番号5の日付が、ラベル3には番号6の日付が、ラベル4には番号7の日付が
入ってしまいます。その後、ラベル5にはラベル8の品名が入り・・・と、Next Recordが
1段目の品名1~4、2段目の日付4~7、3段目の品名8~11、4段目の日付12~15
段ごとに品名と日付を混ぜた表示になります。
それを、1段目の品名1~4、2段目の日付1~4、3段目の品名5~8、4段目の日付5~8
という表示にしたいです。

番号 品名 年月日
1  机1 H22.3.1
2  机2 H22.3.2
3  机3 H22.3.3
4  机4 H22.3.5  
5  机5 H22.3.5
6  机6 H22.3.6

補足日時:2010/06/14 01:15
    • good
    • 0

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