LibreOfficeのマクロはLibreOffice BASICが標準ですが、Pythonを使ってマクロを書くこともできます。
LibreOffice Calcの簡単なサンプル
シートとセルを選択して値を読み書きするだけのスクリプトです。
def sample():
ここで定義する名前がLibreOffice Calc上でも表示されることになります。
doc = XSCRIPTCONTEXT.getDocument()
シートの選択
名前から選択する場合
sheet = doc.getSheets().getByName('Sheet1')
インデックスから選択する場合
sheet = doc.getSheets().getByIndex(0)
アクティブシートを選択する場合
sheet = doc.CurrentController.getActiveSheet()
値の読み書き(数値バージョン)
A1
とB1
のセルの値を数字として読み取って、その値をC1
に入力します。
# C1 = A1 + B1
A1 = sheet.getCellRangeByName('A1')
B1 = sheet.getCellRangeByName('B1')
C1 = sheet.getCellRangeByName('C1')
C1.Value = A1.Value + B1.Value
値の読み書き(文字列バージョン)
左上を(0,0)
としたインデックスからセルを選択して、その値を文字列として扱います。
# C2 = A2 + B2
A2 = sheet.getCellByPosition(0, 1)
B2 = sheet.getCellByPosition(1, 1)
C2 = sheet.getCellByPosition(2, 1)
C2.String = A2.String + B2.String
指定したセルの値を読み書きするサンプルコード
#!/usr/bin/env python
# -*- coding: utf-8 -*-
def sample():
'''
数値としてA1 + B1の値をC1に代入
文字列としてA2 + B2の値をC2に代入
'''
doc = XSCRIPTCONTEXT.getDocument()
# シートを選択
#sheet = doc.getSheets().getByName('Sheet1')
#sheet = doc.getSheets().getByIndex(0)
sheet = doc.CurrentController.getActiveSheet()
# C1 = A1 + B1
A1 = sheet.getCellRangeByName('A1')
B1 = sheet.getCellRangeByName('B1')
C1 = sheet.getCellRangeByName('C1')
C1.Value = A1.Value + B1.Value
# C2 = A2 + B2
A2 = sheet.getCellByPosition(0, 1)
B2 = sheet.getCellByPosition(1, 1)
C2 = sheet.getCellByPosition(2, 1)
C2.String = A2.String + B2.String
実行結果
関連記事
LibreOfficeの改行と改ページ
LibreOfficeで使えるショットカットキーです。
段落を追加しないで改行
Shift + Enter
改ページ
Ctrl + Enter
...
LibreOffice Calcで最大・最小のセルを見つける方法
MAX/MIN関数
LibreOffice Calcで最大・最小の値を調べたい場合はMAX/MIN関数を使って
=MAX(A2:A6)
=MIN(A2:A6)
のように入力します。(A2、A3、A4、A5、A6の中から最大値と最小値を計算)
MATCH関数
一方、MATCH関数を使うと、指定された範囲の中からその値を取る位置を調べることができます。
=MATC...