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()
に変わります(印刷部分は変わりません)
ということで、印刷まで、きました