ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

OpenOffice Base(データベース)でマクロから印刷

2007-01-30 14:19:42 | OpenOffice

 OpenOffice Baseを使った話で、今日は印刷。
 ただこれは、マクロを記録して出てきたやり方なので、いい方法かどうかはわかりません。
 とにかく、こうやればできるという話。



■仕様

 C:¥temp¥テスト用1.odbというOpenOffice Baseのデータベースファイルがあって、その中にある「レポート1」を開き、そのページを印刷します(なお、¥は、本当は半角です)。

 つまり、昨日、開くところまでやったので、そのあと、印刷します。




■ソース

 マクロは、以下のとおりです
Sub Main

	'**** 書き出し用
   Dim oRep As object
   Dim document   As object
   Dim dispatcher As object
   Dim args1(1) As new com.sun.star.beans.PropertyValue
 

	'**** プロパティを入れるところ
   Dim pProp(1) As New com.sun.star.beans.PropertyValue 
 	'**** データベースを開く
   sURL = ConvertToURL("C:¥temp¥テスト用1.odb") 
   oDoc = starDesktop.loadComponentFromURL(sURL,"_default",0,Array()) 


 	'**** レポートとコネクションの接続
   oForms = oDoc.getReportDocuments() 
   oAConnection = oDoc.DataSource.getConnection("","") 

 	'**** プロパティを設定 Nameが属性 Valueが値
   pProp(0).Name = "ActiveConnection" 'コネクション
   pProp(0).Value = oAConnection 
   pProp(1).Name = "OpenMode" 		' デザインで開く?入力フォーム?
   pProp(1).Value = "open"		' 入力フォーム(openDesignだとデザイン)
    
	'**** フォームを開く
   oRep = oForms.loadComponentFromURL("レポート1","_default",0,pProp()) 


	'**** フォームの印刷
    document = oRep.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

    args1(0).Name = "Copies"
    args1(0).Value = 1
    args1(1).Name = "Collate"
    args1(1).Value = false

    dispatcher.executeDispatch(document, ".uno:Print", "", 0, args1())

End Sub

(上記¥ < > は、本当は半角)
上記で赤で書かれているところが、ファイル名、フォーム名など、固有のものになります
(使うときは、実際のみなさんの開きたいものが、入ります)
青字のところが、今回の印刷部分です(ほかは前回と同じ)。

なお、フォームの場合には、上記の
oDoc.getReportDocuments()

oDoc.getFormDocuments()
に変わります(印刷部分は変わりません)




ということで、印刷まで、きました

この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« \"GPSカーナビにウイルスが混... | トップ | 業務をまとめたシート、入出... »
最新の画像もっと見る

OpenOffice」カテゴリの最新記事