3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援→開発戻り浦島太郎状態の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。

(OpenOfficeBasic)印刷プレビューかどうかを判断する

OpenOffice3.2のマクロ(Basic)で、現在のビューが印刷プレビューかどうかを判断する方法です。

自力では難しそうだったので、ググったら OOobbs2/142 でどんぴしゃな方法が載っていました。

100%コピペなコードですが、転載させてもらいます。

Function IsPrintPreview( oDoc ) As Boolean

Dim bPreview As Boolean

sViewInterface = ""

oModMgr = CreateUnoService( _

"com.sun.star.frame.ModuleManager")

sModule = oModMgr.identify(oDoc)

Select Case sModule

Case "com.sun.star.text.TextDocument"

sViewInterface = "com.sun.star.view.XViewSettingsSupplier"

Case "com.sun.star.sheet.SpreadsheetDocument"

sViewInterface = "com.sun.star.sheet.XSpreadsheetView"

Case Else

sViewInterface = ""

End Select

If sViewInterface <> "" Then

oController = oDoc.getCurrentController()

bPreview = NOT HasUnoInterfaces(oController, sViewInterface)

End If

IsPrintPreview = bPreview

End Function

この関数の引数に、ThisComponent を渡すと、印刷プレビューかどうかが true,false で返ってくるので、これで判別できます。