Dim title As String Dim args As Object args = ThisComponent.getArgs() For i = 0 To Ubound(args) If args(i).Name = "Title" Then title = args(i).Value Exit For End if Next i MsgBox(title)
LibreOfficeのMsgBoxについて
MsgBox("メッセージ", 1, "タイトル") 'メッセージ/Type/タイトルを指定
Type引数
0 | OKのみ |
---|---|
1 | OK、キャンセル |
2 | 中止、やり直し、取消し |
3 | はい、いいえ、キャンセル |
4 | はい、いいえ |
5 | やり直し、キャンセル |
16 | ストップアイコンを表示 |
32 | 疑問符アイコンを表示 |
48 | エクスクラメーションアイコンを表示 |
64 | インフォメーションアイコン |
128 | 1番目のボタンをデフォルト |
256 | 2番目のボタンをデフォルト |
512 | 3番目のボタンをデフォルト |
戻り値
1 | OK |
---|---|
2 | キャンセル |
3 | 中止 |
4 | やり直し |
5 | 無視 |
6 | はい |
7 | いいえ |
LibreOfficeCalcのVBで次の移動可能なセルに移動する
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") dispatcher.executeDispatch(ThisComponent.CurrentController.Frame, ".uno:JumpToNextUnprotected", "", 0, Array())
LibreOfficeCalcのVBでEnterキー押下時のセル移動方向を変更
sheetSettings =CreateUnoService("com.sun.star.sheet.GlobalSheetSettings") sheetSettings.MoveDirection = com.sun.star.sheet.MoveDirection.RIGHT
LibreOfficeCalcのVBでドキュメントの新規追加・編集・保存・閉じる
Dim document As Object document = StarDesktop.loadComponentFromURL("private:factory/scalc", "_blank", 0, Array()) 'document = StarDesktop.loadComponentFromURL(ConvertToUrl("C:\Users\user\Desktop\test1.ods"), "_blank", 0, Array()) Dim sheet As Object sheet = document.CurrentController.ActiveSheet sheet.getCellByPosition(4, 4).setValue 2 document.storeAsURL(ConvertToUrl("C:\Users\user\Desktop\test2.ods"), Array()) document.dispose
LibreOfficeCalcのVBでシートやセルを操作する
選択中のセル情報を取得する。
ThisComponent.CurrentSelection.RangeAddress.StartRow ThisComponent.CurrentSelection.RangeAddress.EndRow ThisComponent.CurrentSelection.RangeAddress.StartColumn ThisComponent.CurrentSelection.RangeAddress.EndColumn
セルを選択する。
Dim dispatcher As Object dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") Dim args(0) as new com.sun.star.beans.PropertyValue args(0).Name = "ToPoint" args(0).Value = "$A$4" dispatcher.executeDispatch(ThisComponent.CurrentController.Frame, ".uno:GoToCell", "", 0, args())
セルを選択する。
ThisComponent.CurrentController.Select(ThisComponent.Sheets.getByIndex(0).getCellByPosition(0, 5)) ThisComponent.CurrentController.Select(ThisComponent.Sheets.getByName("シート名").getCellRangeByName("A2:C2"))
セルから数値の取得と、セルに数値をセットする。
ThisComponent.Sheets.getByIndex(0).getCellByPosition(0, 5).getValue() ThisComponent.Sheets.getByName("シート名").getCellRangeByName("A2").setValue(1234)
セルから文字列の取得と、セルに文字列をセットする。
ThisComponent.CurrentController.ActiveSheet.getCellByPosition(3, 0).getString() ThisComponent.CurrentController.ActiveSheet.getCellRangeByName("B1").setString("test1")
セルに関数をセットする。
ThisComponent.CurrentController.ActiveSheet.getCellRangeByName("B5").setFormula("=SUM(B1:B4)")
セルの行と列番号を取得する。
ThisComponent.Sheets.getByIndex(0).getCellByPosition(4, 0).CellAddress.Column ThisComponent.Sheets.getByName("シート名").getCellByPosition(3, 0).CellAddress.Row
セルの文字に色付けする。
ThisComponent.Sheets.getByIndex(0).getCellByPosition(4, 0).CharColor = rgb(255,0,0) ThisComponent.Sheets.getByName("シート名").getCellRangeByName("A1:A2").CharColor = rgb(255,0,0)
セルの背景に色付けする。
ThisComponent.Sheets.getByIndex(0).getCellByPosition(4, 0).CellBackColor = rgb(0,255,0) ThisComponent.Sheets.getByName("シート名").getCellRangeByName("A1:A2").CellBackColor = rgb(0,255,0)
範囲を指定してセルをコピーする。
Dim sheet As Object sheet = ThisComponent.Sheets.getByIndex(0) '選択範囲をコピーする sheet.copyRange(sheet.getCellRangeByName("コピー先").getCellAddress(), sheet.getCellRangeByName("コピー元").getRangeAddress()) '行をコピーする sheet.copyRange(sheet.getCellRangeByName("A1").getCellAddress(), sheet.Rows(1).getRangeAddress())
指定範囲の内容や書式をすべてクリアする。
ThisComponent.Sheets.getByIndex(0).getRows.getByIndex(4).clearContents(511)
指定範囲の値のみをクリアする。
ThisComponent.Sheets.getByName("シート名").getRows.getByIndex(6).clearContents(7)
指定範囲を削除する。
(第二引数:1=UP、2=LEFT)
Dim sheet As Object sheet = ThisComponent.Sheets.getByName("シート名") sheet.removeRange(sheet.getCellRangeByName("A3:D10").RangeAddress, 1)
行を選択する。
ThisComponent.CurrentController.Select(ThisComponent.Sheets.getByIndex(0).getRows.getByIndex(0))
行を追加する。
ThisComponent.Sheets.getByName("シート名").getRows.insertByIndex(3, 1) '挿入位置/追加行数
行を削除する。
ThisComponent.Sheets.getByIndex(0).getRows.removeByIndex(3, 1) '削除位置/削除行数
列を選択する。
ThisComponent.CurrentController.Select(ThisComponent.Sheets.getByIndex(0).getColumns.getByIndex(0))
列を追加する。
ThisComponent.Sheets.getByName("シート名").getColumns.insertByIndex(3, 1) '挿入位置/追加列数
列を削除する。
ThisComponent.Sheets.getByIndex(0).getColumns.removeByIndex(3, 1) '削除位置/削除列数
入力規則を削除する。
ThisComponent.Sheets.getByIndex(0).getColumns.getByIndex(5).Validation.Type = 0
印刷範囲を設定する。
ThisComponent.CurrentController.ActiveSheet.setPrintAreas(Array(sheet.getCellRangeByName("A1:E30").getRangeAddress()))
現在のシートを取得する。
ThisComponent.CurrentController.ActiveSheet
シートの存在を確認する。
ThisComponent.Sheets.hasByName("シート名")
シートを選択する。
ThisComponent.CurrentController.Select(ThisComponent.Sheets.getByName("シート名").getCellRangeByName("A1"))
シートを追加する。
ThisComponent.Sheets.insertNewByName("新規シート名", 0)
シートを削除する。
ThisComponent.Sheets.removeByName("シート名")
シートをコピーする。
ThisComponent.Sheets.copyByName("コピー元", "新しいシート名", 0) '先頭に追加 ThisComponent.Sheets.copyByName("コピー元", "新しいシート名", ThisComponent.Sheets.getCount()) '末尾に追加
シートを保護、解除する。
sheet.Protect("password") sheet.Unprotect("password")
自動再計算を無効にする。
ThisComponent.enableautomaticCalculation(False)