複数の行を 1 つの文書に差し込み印刷する

複数の行を 1 つの文書に差し込み印刷する

各列に異なるフィールドを持つ Excel ファイルがあります。

フィールド 1__ | フィールド 2__ | など
F1 項目 1 | F2 項目 1 | など
F1 項目 2 | F2 項目 2 | など

各フィールドに含まれる項目の数は異なります。

各フィールドのすべての項目を 1 つのドキュメントにリストし、レコードごとに複数のドキュメントに分割しない Word 2010 ドキュメントを作成したいと考えています。最終的な Word ドキュメントは次のようになります。

フィールド 1
__ F1 項目 1
__ F1 項目 2

フィールド 2
__ F2 項目 1
__ F2 項目 2
__ F2 項目 3

「フィールド 1」と「フィールド 2」のラベルには差し込み印刷フィールドは必要ありませんが、フィールドの下のすべての項目を差し込み印刷して 1 つのドキュメントに表示する必要があります。これは可能ですか? これを実現するためのアイデアやリソースはありますか?

答え1

これにはSQL Server Reporting Servicesのようなクエリとレポートツールを使用します。ODBC経由でExcelファイルに接続できます。

http://weblogs.sqlteam.com/joew/archive/2008/08/22/60695.aspx

レポート デザインには 2 つのテーブル (フィールド 1 用とフィールド 2 用) が含まれます。データを 2 つのデータセットとして取得するには、2 つの (非常に単純な) SQL SELECT ステートメントを記述する必要があります。

Reporting Services は、Word へのレンダリングをうまく行います。レイアウトは、複数のデータ領域、ネストされたサブレポート、複雑なグラフなど、Word の差し込み印刷よりもはるかに複雑になることがあります。

Reporting Services をデスクトップ アプリとして実行したり、Windows または Word アプリに埋め込んだり、SharePoint サイトやシンプルな Reporting Services ポータルに展開したりできます。

答え2

あなた5月WordのDATABASEフィールドをこのために使うことができます。挿入するためのダイアログボックスはリボンにないので、Wordのオプションでそれを見つけてQATなどに配置する必要があります。しかし、1つか2つの問題があるため、手動でフィールドを挿入する方がよいでしょう。Ctrl-F9を使用して、特別なフィールド括弧コードのペアを挿入します。

{  }

(これらの中括弧をキーボードで入力することはできません)。

そして、{ } の間のすべてが通常のテキストになります。Excel ドキュメントの名前が c:\xl\mywb.xlsx で、データが Sheet1$ というシートにあり、Field1、Field2、Field3 という 3 つのフィールドがあるとします。この場合、最初の DATABASE フィールドは次のようになります。

{ DATABASE  \d "C:\\xl\\mywb.xlsx" \s "SELECT cf1.[field1] FROM [Sheet1$] cf1 WHERE ((cf1.[field1] IS NOT NULL ))" \h }

パス名に二重のバックスラッシュが含まれていることに注意してください。入力したら、フィールドを選択し、F9 キーを押して実行し、Alt-F9 キーを押して結果を確認します。最初の列に必要な値に近い場合は、これで問題ありませんが、そうでない場合は、この方法はやめたほうがよいでしょう。エラーが報告された場合は、おそらく入力ミスが原因です。

1つの列が機能したら、データベースフィールドをコピー/貼り付けして名前を変更します。

{ DATABASE  \d "C:\\xl\\mywb.xlsx" \s "SELECT cf1.[field1] FROM [Sheet1$] cf1 WHERE ((cf1.[field1] IS NOT NULL ))" \h }

{ DATABASE  \d "C:\\xl\\mywb.xlsx" \s "SELECT cf2.[field2] FROM [Sheet1$] cf2 WHERE ((cf2.[field2] IS NOT NULL ))" \h }

次に選択し、F9、Alt + F9 をもう一度押します。問題がなければ、残りのフィールドについても繰り返します。

いくつかの注意事項:

WHERE ((cf2.[field2] IS NOT NULL ))は、列のセルの数が異なるという事実に対処するためにあります。しかし、それ以上のことが必要な場合、このテクニックでそれを排除できます。全て列の下部にある空のセルだけでなく、空白のセルも表示されます。

\h は列ヘッダーを追加するだけです。

「cf1」、「cf2」は SQL の「テーブル エイリアス名」です。必要に応じて作成できます。これらは必要ないはずですが、これらがないと Word が少し混乱する傾向があるため、データベース フィールド ダイアログ ボックスを使用してこれらのフィールドを挿入しようとすると (これらのエイリアス名は挿入されません)、これらが存在します。

関連情報