LibreOffice Basic マクロを久しぶりに使うので書いてみる。
OpenOffice.orgでの話が「OpenOffice.org Basic 入門 01 Creating a Module in a Standard Library」に書いてあって、あまり変わらないような気もするが…。
LibreOffice ver. 6.1.0.3(x64)
目的
気象庁からもらってきた日毎の平均気温の和を求め、一定の値になったらその日付がわかるようにする。
もらってきたデータを張り付けて、data_test1.odsとしてCalcのファイルを作成する。
間があき過ぎるので何回やっても次には忘れている。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
Sub Main Dim sumvalue as integer Dim dnum, i as integer oSheet = ThisComponent.Sheets(0) oRange = oSheet.getCellRangeByName("A1") oCursor = oSheet.createCursorByRange(oRange) oCursor.gotoEndOfUsedArea(true) dnum = oCursor.getRows.Count oSheet.Columns.removeByIndex(2, 1) for i=0 to dnum dCell = oSheet.getCellByPosition(1,i) sumvalue=sumvalue+dCell.value if sumvalue>100 then sCell = oSheet.getCellByPosition(2,i) sCell.value = sumvalue sumvalue = 0 end if next i End Sub |
LibreOffice Calc特有の操作がいくつかあり、検索してそこらから引っ張ってきたものは以下の通り。
列方向にいくつデータがあるか求める。
1 2 3 4 5 |
oSheet = ThisComponent.Sheets(0) oRange = oSheet.getCellRangeByName("A1") oCursor = oSheet.createCursorByRange(oRange) oCursor.gotoEndOfUsedArea(true) dnum = oCursor.getRows.Count |
3列目から1列分の列を削除する。
1 |
oSheet.Columns.removeByIndex(2, 1) |