Jump to content

マクロ/Writer/008

From The Document Foundation Wiki
This page is a translated version of the page Macros/Writer/008 and the translation is 100% complete.


説明

LibreOffice Writer で、 ▸ 変換 ▸ Table to Text(表の解除:表をテキストへ)... の機能をエミュレートするマクロを作成したいとします。

dispatcher を使用して、.uno:ConvertTableToText コマンドを実行します (コードのこの部分は、ツール ▸ オプション ▸ 詳細 ▸ マクロの記録を有効にする (限定的) が有効になっている場合に記録できます)。

マクロは、まず、CurrentControllerSelect メソッドを使用してテーブル内にカーソルを配置し、テーブル内に作成されたカーソルに渡します。

次の例では、「Table2」という名前のテーブルが変換されます。

テーブルへのアクセスは、サービス TextTablesからメソッド getByName を介して行われます。メソッド com.sun.star.text.createCursorByCellName[1] では、セル A1 にカーソルを作成できます。このカーソルは、テーブル内での選択に使用され、変換を行うことができます。

Code

LibreOffice Basicの場合:

Option Explicit

Sub Main()
    TableToText("Table2")
End Sub


Sub TableToText(TableName As String)
    '''表をテキストに変換'''

    Dim oDoc As Object ' com.sun.star.uno.XInterface (ThisComponent)
    Dim oTable As Object ' com.sun.star.text.XTextTable
    Dim oTableCursor As Object ' com.sun.star.text.XTextTableCursor
    Dim document As Object ' com.sun.star.frame.XFrame (ThisComponent.CurrentController.Frame)
    Dim dispatcher As Object ' com.sun.star.frame.DispatchHelper
    Dim args(0) As New com.sun.star.beans.PropertyValue

    oDoc = ThisComponent
    oTable = oDoc.TextTables.getByName(TableName)
    oTableCursor = oTable.createCursorByCellName("A1")
    oDoc.CurrentController.select(oTableCursor)

    document = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

    args(0).Name = "Delimiter"
    args(0).Value = CHR$(9) ' ASCII char #9 = TAB

    dispatcher.executeDispatch(document, ".uno:ConvertTableToText", "", 0, args())

End Sub ' TableToText

マクロのテスト用 ODT ファイル

メモ