マクロ/Writer/008
Appearance
TDF LibreOffice Document Liberation Project Community Blogs Weblate Nextcloud Redmine Ask LibreOffice Donate
説明
LibreOffice Writer で、
▸ ▸ の機能をエミュレートするマクロを作成したいとします。dispatcher を使用して、.uno:ConvertTableToText コマンドを実行します (コードのこの部分は、
▸ ▸ ▸ が有効になっている場合に記録できます)。マクロは、まず、CurrentController の Select メソッドを使用してテーブル内にカーソルを配置し、テーブル内に作成されたカーソルに渡します。
次の例では、「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 ファイル