シートの見出しはSheetTabsで設定します。
<表示>
ThisComponent.CurrentController.sheetTabs = True
<非表示>
ThisComponent.CurrentController.sheetTabs = False
シートの見出しはSheetTabsで設定します。
<表示>
ThisComponent.CurrentController.sheetTabs = True
<非表示>
ThisComponent.CurrentController.sheetTabs = False
シートの表示はIsVisibleで設定します。
sub ksSheetVisible
dim sheet as object
sheet = ThisComponent.sheets(0)
if sheet.IsVisible = True then
sheet.IsVisible = False
else
sheet.IsVisible = True
end if
end sub
Libreにはブックという概念がないので、
なかなか難しい。
構造的には、以下のよう対応しています。
——————————————————–
EXCELの場合 => Libreの場合
——————————————————–
ThisWorkbook => ThisComponent
ActiveWorkbook => StarDesktop.CurrentComponent
——————————————————–
マクロとしては、以下のようになりますが、
色々と不満です。これは、ダイアログを出すとか
工夫が必要だと思います。
sub ksSheetMoveBetween
dim movingSheetByIndex as integer
dim targetSheetByName as string
movingSheetByIndex = 0
targetSheetByName = “無題3”
dim document as object
dim dispatcher as object
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService(“com.sun.star.frame.DispatchHelper”)
dim args1(2) as new com.sun.star.beans.PropertyValue
args1(0).Name = “DocName”
args1(0).Value = targetSheetByName
args1(1).Name = “Index”
args1(1).Value = 32767 <= 一番後ろに移動させる場合
args1(2).Name = “Copy”
args1(2).Value = false <= 移動の場合false, copy は true
dispatcher.executeDispatch(document, “.uno:Move”, “”, movingSheetByIndex, args1())end
sub
sheet(“test1”)を一番はじめに移動させます。
Sub ksSheetsMove
ThisComponent.sheets.moveByName(“test1”, 0)
End Sub
Sub ksSheetsActive
dim controller as object
dim sheet as object
With ThisComponent
controller = .getCurrentController()
sheet = .getSheets.getByName(“test1”)
‘ sheet = .getSheets.getByIndex(0)
controller.setActiveSheet(sheet)
End With
End Sub
sheetの名前が明らかなときは、getByNameメソッドの方が
便利そうです。
sheetのインデックスで指定する場合は、getByIndexメソッドを
使用します。