LibreOffice Calc: Basic でセルをまとめて扱う


無料のスプレッドシート LibreOffice Calc のセルを、 Basic の中でまとめて扱う方法について書きました。 Microsoft Office Excel の VBA では、 Range として複数のセルを扱うことができますね。

環境

  • LibreOffice 5.2.0.4

方法

LibreOffice Calc には CellRange というのがあり、 getCellRangeByPosition を使って取得します。

left, top, right, bottom には、 それぞれ一番左のセルの列、一番上のセルの行、一番右のセルの列、一番下のセルの行を渡します。

ほかに、 getCellRangeByName という関数もあります。

何が嬉しいのか

getCellRangeByPosition を知らなくても、 getCellByPosition さえあればセルの操作はできます。 しかし、 getCellRangeByPosition を使うと大幅に時間を短縮できることがあります。

たとえば20000行200列の表があると考えてください。 この表の行の背景色を、1行おきに変えることを考えます。

getCellByPosition を使ってセル毎に処理をすると次のようになります。

しかしこれはものすごく時間がかかります。 セルひとつひとつに対して背景色を変えていますから。

それが CellRange で1行分のセルを取得して、 1行の背景色を一度に変えると時間が大幅に短縮されます。