- ベストアンサー
差し込み印刷でのワードのNext Recordルールについて
- 差し込み印刷でのワードのNext Recordルールを使用する際、品名と年月日の表示が正しく変わらず、順番が乱れてしまう問題が発生しています。
- ラベル印刷の用紙設定を試みたが、他の文字の間に品名と日付を入れる必要があり、微調整がうまくできなかったため、行間を調整して作成しました。
- どのようにすれば、差し込み印刷で品名と日付が順番に正しく表示されるようになるでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>それを、1段目の品名1~4、2段目の日付1~4、3段目の品名5~8、4段目の日付5~8 という表示にしたいです。 確認ですが、1つのラベルに品名1と日付1、品名2と日付2、・・・・というように、それぞれのデータに対応するラベルを1枚ずつ作成したいということですよね。 その場合は、すでに回答したように4列9行の「罫線なし」にした表を挿入し、ごく普通に差し込みフィールドを挿入すれば、問題なく順番に差し込みができると思うのですが・・・・(念のため、こちらでも確認しましたが問題なく作成できました)。 #差し込み印刷は、ワードのバージョンによってかなり操作が異なりますので、質問の際にはワードのバージョンを提示するようにしたほうが良いと思います。
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
昨日試してみましたが、おっしゃる通りの不具合の再現はできましたが、反応からすると、どうやら、差し込み印刷の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
お礼
すごいものを考えてくださってありがとうございます。今はまだまだ初心者のため、マクロはさっぱりで、コピーして作成しようとしたものの、自分で設定し直しがわからず、断念してしまいました・・・。でも、とても便利そうなので、使えるようになるよう、がんばってみます。
- MackyNo1
- ベストアンサー率53% (1521/2850)
画像が小さくて、質問内容がいま一つ把握できていませんが、ブロックごとに次のデータを差し込みたいなら、「罫線なし」の表を作成し、その一番左上のセルに差し込みフィールドを挿入し、そのセルをコピーして、そのフィールドの前に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
お礼
何度もアドバイスをありがとうございます。おっしゃるとおり、罫線なしにした表を挿入して、その中に品名と日付を入れると、その中の品名と日付が同じ番号のものになり、次の枠では次の番号の品名と日付になりました!!おかげで望む形のものができて助かりました!!