「Web出版サイト」ベータ公開

Q&A集[?]

当サイトでのご質問の受付は終了しました

すべてのコンテンツを読み込み専用としたため、回答欄からも投稿できません

Apache OpenOffice/LibreOfficeのご質問はそれぞれのフォーラムへご投稿ください

質問コーナー

サイト内検索

分類メニュー

関連サイト


本日:1
昨日:0
総数:2392
現在:3


カルク帳票への差込印刷

ページOpenOffice.org FAQの登録ページ
投稿者o-yasu
分類
edit/refer
優先順位
edit/refer
状態
edit/refer
カテゴリー
edit/refer
投稿日2010-09-18 16:31:48 (土)
OSwin7
依存するページIssue #35410
バージョン
edit/refer

メッセージ

回答ページでは行末に「~」を付加する必要はありません

お世話になります。

宛名をセル参照にして、必要に応じて一枚ずつ出力するため、カルクでつくった帳票があります。

それを使って、カルクで作っている宛名リストの分全て一気に出力したいのですが、良い方法はありませんか?

ライターで作った帳票に差込印刷をするイメージなのですが・・・。 エクセルでのマクロをいじった経験はあるので、マクロで繰り返し処理するようにしたら良いのかとも考えたのですが、OOoのマクロを理解できていないので、簡易な方法はないものかと思っています。

よろしくおねがいします。


IssueTrackerを調べてみました

M.Kamataki (2010-09-19 10:22:13 (日))

Calcに差し込み印刷機能を取り入れて欲しいという要望が、OpenOffice.orgの不具合・要望データベースに登録されていないか、調べてみました。以下のものが該当しそうです。ということで、Calcには差し込み印刷機能はないわけです。

mail merge database into Calc
http://ja.openoffice.org/issues/show_bug.cgi?id=35410

>簡易な方法はないものかと思っています。

Calcには差し込み印刷機能はありませんから、難しいですね。(マクロなら可能性はあるでしょう)

>カルクで作っている宛名リストの分全て一気に出力したいのです

OpenOffice.orgで実現するなら、Calcの宛名リストをデータソースに登録し、「ファイル」−「新規作成」−「ラベル」で宛名印刷用のWriterファイルを作成するのが、一番「簡易な方法」だと思います。

マクロ例

M.Kamataki (2010-09-19 18:14:56 (日))

Calcの帳票に出力という意味では全然ダメですが、とりあえず以下のマクロを操作中のCalcで実行すると、標準で利用できる「Bibliography」データベースの「biblio」テーブルから読み込んだ4つのフィールドを縦に並べてアクティブシートに書き出します。

Sub MailMergeByCalc
Dim DatabaseContext as Object
Dim DataSource as Object
Dim Connection as Object
Dim Statement as Object
Dim ResultSet as Object
Dim Sheet as Object
Dim metadata as object
Dim columnCount as integer
Dim x as Integer
Dim y as Integer
Dim n as Integer

' DBとの接続部分
DatabaseContext=createUnoService("com.sun.star.sdb.DatabaseContext")
DataSource=DatabaseContext.getByName("Bibliography")
Connection = DataSource.GetConnection("","")

' SQLのセット
Statement = Connection.createStatement()
ResultSet= Statement.executeQuery( "SELECT ""ISBN"" ,  ""Title"" , ""Author"" , ""Publisher"" FROM ""biblio""" )

' Calcのシートはアクティブシート
Sheet = thisComponent.currentController.ActiveSheet

' ResultSetのメタデータからフィールド(カラム)数を取得
metadata = resultSet.getMetaData
columnCount = metadata.getColumnCount

' レコードの読み込みとCalcシートへの書き出し
If  IsNull(ResultSet) Then
		MsgBox("レコードがありません")
	Else
		x = 1 ' xがcol方向の座標値 例はB2から書き出し
		While ResultSet.next
		y = 1 ' yがrow方向の座標値
		n = 1
			While n <= columnCount
			Sheet.getCellByPosition(x,y).String = ResultSet.getString(n)
			n = n + 1
			y = y + 1
			Wend
		x = x + 7
		Wend
End If

' データベースを閉じる
Statement.Close()
Connection.Close()
Connection.Dispose()
End Sub

※9/20 faq/4/164を参考にフィールド数をマクロで取得するよう変更

通常、Calcにデータベースのデータを書き出すサンプルは、横に1レコードが並ぶものが多いのですが、そのサンプの変数の「x」と「y」を入れ替え上記のようなサンプルにしてみました。

シートを縦に使う

M.Kamataki (2010-09-20 01:11:37 (月))

上記のマクロ例はシートを横に使うものでしたが、下記のように「レコードの読み込みとCalcシートへの書き出し」部分を変更するとシートを縦に使うようになります。

If  IsNull(ResultSet) Then
		MsgBox("レコードがありません")
	Else
		x = 1 ' xがcol方向の座標値 例はB2から書き出し
		y = 1 ' yがrow方向の座標値
		While ResultSet.next
		n = 1
			While n <= columnCount
			Sheet.getCellByPosition(x,y).String = ResultSet.getString(n)
			n = n + 1
			y = y + 1
			Wend
		y = y + 43
		Wend
End If

差し込み印刷(もどき)サンプル

M.Kamataki (2010-09-21 12:16:11 (火))

色々考えたんですが、1ページずつPDFにするのが一番簡単そうだったので、マクロ版のCalc帳票の差し込み印刷(もどき)のサンプルを作成してみました。

filefaq6_20sample4.ods

サンプルファイルを読み込んだら、「PDFに出力」ボタンをクリックしてください。Bibliographyデータベースのbiblioテーブルから4つのフィールド値を1ページの帳票にしてPDF出力します。「Finish」というメッセージボックスが表示されたら、サンプルファイルと同じフォルダをチェックしてみてください。サンプルでは、WHERE句でレコードを絞り込んでいるので、帳票ファイルのファイル名から「〜_0001.pdf」という名称のPDFファイルを6つ生成します。

本番では適宜エラー処理を入れてください。

なお、もしBaseにデータが登録されているのなら、Sun Report Builder(いずれOracleブランドになります)で帳票を作成されたほうが大変楽だと思います。

要望にします

M.Kamataki (2010-09-21 12:23:08 (火))

Calcで差し込み印刷機能を取り入れて欲しいという要望がIssueTrackerに登録されてるので、ご質問自体は「要望」にします。

一応、IssueにはCCしておきました。もし、機能追加をお望みでしたら、o-yasuさんも「当サイトの使い方/不具合・要望を出す」の「5.実装を待ちます。」をお読みになり、投票かCCをお願いします。

Excelでも同様の要望が

M.Kamataki (2011-08-04 18:07:57 (木))

Excelでも事情は同じようです。以下のような質問がありました。

excelからexcelへの差し込み印刷
http://oshiete.goo.ne.jp/qa/3597313.html

ベストアンサーで紹介された記事が以下です。

Excelでカンタン差し込み印刷
http://pc.nikkeibp.co.jp/article/NPC/20070301/263710/

サンプルはVBA付きExcelファイルですが、OpenOffice.org/LibreOffice、いずれも3.3で問題なくマクロも動作します。Calcでも参考になりそうなので、情報を加えてみました。

お名前:
題名:


添付ファイル: filefaq6_20sample4.ods 1052件 [詳細]