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 で返ってくるので、これで判別できます。