前の関連記事:Calc(44)ファイルフィルターのオプションダイアログ
メニューから開くファイル保存ダイアログ
ODS形式で保存するときのダイアログのオプション
これはCalcドキュメントのデフォルト形式なので、ファイル→保存、か、名前をつけて保存、で保存できます。
LibreOffice5(92)全ディスパッチコマンドのラベルの取得で調べた表をもとにするとディスパッチコマンドでは.uno:Saveか.uno:SaveAsになります。
これででてくるファイル保存ダイアログはLibreOffice5(77)FilePickerのTemplateDescriptionを実行してみるのFILESAVE_AUTOEXTENSION_PASSWORD_FILTEROPTIONSになります。
「フィルター設定を編集する」チェックボックスはグレイアウトして変更できません。
「ファイル名に拡張子を付ける」チェックボックスは「ファイルの種類」を変更したときに拡張子を変更するかどうかに反映されます。
「ファイル名に拡張子を付ける」にチェックを付けていると「ファイルの種類」を変更すると拡張子が変更されます。
「ファイル名に拡張子を付ける」のチェックを外すと「ファイルの種類」を変更しても拡張子は元のファイルの種類のままのものになります。
ということでこのチェックボックスは正確には「ファイル名に拡張子を付ける」のではなく、「ファイル名の拡張子を変更する」ですね。
ファイルの種類は「ODF表計算ドキュメント(.ods)(*.ods)」というように拡張子が繰り返し表示されてしまっています。
この拡張子重複表示はWindows版すべてのファイル形式で同じです。
「パスワード付きで保存する」にチェックを付けるとパスワードを設定するダイアログをが出現してODFファイルにパスワードを設定できます。
このダイアログをマクロから利用する方法はわかりませんでした。
CSV形式で保存するときのダイアログのオプション
CSV形式で保存するにはODS形式のときと同様にファイル→保存、か、名前をつけて保存、でファイル保存ダイアログを表示させて、「ファイルの種類」を「テキストCSV(.csv)(*.csv)」を選択します。
「ファイル名に拡張子を付ける」にチェックを入れていると「ファイル名」の拡張子がodsからcsvに変更されます。
CSV形式ではパスワードは設定できないので「パスワード付きで保存する」チェックボックスは変更できません。
「フィルター設定を編集する」チェックボックスにチェックして「保存」ボタンをクリックするとCalc(44)ファイルフィルターのオプションダイアログでみたCSVのオプションダイアログが表示されます。
「キャンセル」ボタンをクリックするとファイルの保存自体がキャンセルされます。
PDF形式で保存するときのダイアログのオプション
PDF形式で保存するにはファイル→エクスポート、でファイルの種類をPDFにするか、ファイル→PDFとしてエクスポート、にします。
これらはディスパッチコマンドでは.uno:ExportToと.uno:ExportToPDFに該当します。
PDFとしてエクスポート、ではCalc(44)ファイルフィルターのオプションダイアログのPDFオプションダイアログがまず表示され、そのダイアログで「エクスポート」すると、「ファイル名に拡張子を付ける」チェックボックスだけのFILESAVE_AUTOEXTENSIONのファイル保存ダイアログが表示されます。
「ファイルの種類」はPDFしか選択できないので、このダイアログでのチェックボックスは意味がありません。
ファイル→エクスポート、では「選択範囲」チェックボックスが付いたFILESAVE_AUTOEXTENSION_SELECTIONが表示されます。
しかしこの「選択範囲」チェックボックスはチェックを付けても何が変わるのかわかりませんでした。
データの入った複数のシートが存在する場合、PDFオプションダイアログで「Selection/Selection sheet(s)」を選択すると、アクティブシートだけPDFファイルになりました。
「すべて」を選択するとすべてのシートがページとしてPDFファイルに出力されました。
選択したセルのみ出力するという機能はないようです。
FilePickerのサービスとインターフェイス一覧
マクロでファイル保存ダイアログを使ってみるとWindowsでの「ファイル名に拡張子を付ける」チェックボックスだけは最初から実装してありましたが、それ以外のチェックボックスは自分で実装しないといけないようです。
ファイル保存ダイアログのチェックボックスはXFilePickerControlAccessインターフェイスのメソッドで操作します。
FilePickerサービスは毎回使う直前にインスタンス化しないといけないと、ちゃんと動かないときがあります。
またオートメーションで実行するとLibreOfficeがクラッシュします。
またオートメーションで実行するとLibreOfficeがクラッシュします。
def macro(): ctx = XSCRIPTCONTEXT.getComponentContext() # コンポーネントコンテクストの取得。 smgr = ctx.getServiceManager() # サービスマネージャーの取得。 tcu = smgr.createInstanceWithContext("pq.Tcu", ctx) # サービス名か実装名でインスタンス化。 filepicker = smgr.createInstanceWithContext("com.sun.star.ui.dialogs.FilePicker", ctx) tcu.wtree(filepicker)
├─.lang.XInitialization
│ void initialize( [in] [any] aArguments
│ ) raises ( .uno.Exception)
├─.ui.dialogs.XFilePicker3
│ ├─.lang.XComponent
│ │ void addEventListener( [in] .lang.XEventListener xListener)
│ │ void dispose()
│ │ void removeEventListener( [in] .lang.XEventListener aListener)
│ ├─.ui.dialogs.XFilePicker2
│ │ │ [string] getSelectedFiles()
│ │ └─.ui.dialogs.XFilePicker
│ │ │ string getDisplayDirectory()
│ │ │ [string] getFiles()
│ │ │ void setDefaultName( [in] string aName)
│ │ │ void setDisplayDirectory( [in] string aDirectory
│ │ │ ) raises ( .lang.IllegalArgumentException)
│ │ │ void setMultiSelectionMode( [in] boolean bMode)
│ │ └─.ui.dialogs.XExecutableDialog
│ │ short execute()
│ │ void setTitle( [in] string aTitle)
│ ├─.ui.dialogs.XFilePickerNotifier
│ │ void addFilePickerListener( [in] .ui.dialogs.XFilePickerListener xListener)
│ │ void removeFilePickerListener( [in] .ui.dialogs.XFilePickerListener xListener)
│ ├─.ui.dialogs.XFilePreview
│ │ long getAvailableHeight()
│ │ long getAvailableWidth()
│ │ boolean getShowState()
│ │ [short] getSupportedImageFormats()
│ │ .util.Color getTargetColorDepth()
│ │ void setImage( [in] short aImageFormat,
│ │ [in] any aImage
│ │ ) raises ( .lang.IllegalArgumentException)
│ │ boolean setShowState( [in] boolean bShowState)
│ ├─.ui.dialogs.XFilterGroupManager
│ │ void appendFilterGroup( [in] string sGroupTitle,
│ │ [in] [.beans.StringPair] aFilters
│ │ ) raises ( .lang.IllegalArgumentException)
│ ├─.ui.dialogs.XFilterManager
│ │ void appendFilter( [in] string aTitle,
│ │ [in] string aFilter
│ │ ) raises ( .lang.IllegalArgumentException)
│ │ string getCurrentFilter()
│ │ void setCurrentFilter( [in] string aTitle
│ │ ) raises ( .lang.IllegalArgumentException)
│ └─.util.XCancellable
│ void cancel()
└─.ui.dialogs.XFilePickerControlAccess
void enableControl( [in] short ControlId,
[in] boolean bEnable)
string getLabel( [in] short aControlId)
any getValue( [in] short aControlId,
[in] short aControlAction)
void setLabel( [in] short aControlId,
[in] string aLabel)
void setValue( [in] short ControlId,
[in] short aControlAction,
[in] any aValue)
│ void initialize( [in] [any] aArguments
│ ) raises ( .uno.Exception)
├─.ui.dialogs.XFilePicker3
│ ├─.lang.XComponent
│ │ void addEventListener( [in] .lang.XEventListener xListener)
│ │ void dispose()
│ │ void removeEventListener( [in] .lang.XEventListener aListener)
│ ├─.ui.dialogs.XFilePicker2
│ │ │ [string] getSelectedFiles()
│ │ └─.ui.dialogs.XFilePicker
│ │ │ string getDisplayDirectory()
│ │ │ [string] getFiles()
│ │ │ void setDefaultName( [in] string aName)
│ │ │ void setDisplayDirectory( [in] string aDirectory
│ │ │ ) raises ( .lang.IllegalArgumentException)
│ │ │ void setMultiSelectionMode( [in] boolean bMode)
│ │ └─.ui.dialogs.XExecutableDialog
│ │ short execute()
│ │ void setTitle( [in] string aTitle)
│ ├─.ui.dialogs.XFilePickerNotifier
│ │ void addFilePickerListener( [in] .ui.dialogs.XFilePickerListener xListener)
│ │ void removeFilePickerListener( [in] .ui.dialogs.XFilePickerListener xListener)
│ ├─.ui.dialogs.XFilePreview
│ │ long getAvailableHeight()
│ │ long getAvailableWidth()
│ │ boolean getShowState()
│ │ [short] getSupportedImageFormats()
│ │ .util.Color getTargetColorDepth()
│ │ void setImage( [in] short aImageFormat,
│ │ [in] any aImage
│ │ ) raises ( .lang.IllegalArgumentException)
│ │ boolean setShowState( [in] boolean bShowState)
│ ├─.ui.dialogs.XFilterGroupManager
│ │ void appendFilterGroup( [in] string sGroupTitle,
│ │ [in] [.beans.StringPair] aFilters
│ │ ) raises ( .lang.IllegalArgumentException)
│ ├─.ui.dialogs.XFilterManager
│ │ void appendFilter( [in] string aTitle,
│ │ [in] string aFilter
│ │ ) raises ( .lang.IllegalArgumentException)
│ │ string getCurrentFilter()
│ │ void setCurrentFilter( [in] string aTitle
│ │ ) raises ( .lang.IllegalArgumentException)
│ └─.util.XCancellable
│ void cancel()
└─.ui.dialogs.XFilePickerControlAccess
void enableControl( [in] short ControlId,
[in] boolean bEnable)
string getLabel( [in] short aControlId)
any getValue( [in] short aControlId,
[in] short aControlAction)
void setLabel( [in] short aControlId,
[in] string aLabel)
void setValue( [in] short ControlId,
[in] short aControlAction,
[in] any aValue)
0 件のコメント:
コメントを投稿