LibreOffice(Calc)でのマクロ : 3. セルの扱い

ユーザー Mr. Union の写真
2014年6月22日 -- Mr. Union

Calcでマクロを組む場合には、Calcのセルを扱っていく必要があります。例えば、セルを指定して、そこにテキストを入力する方法は、以下の通りとなります。

Sub Test

Dim oDoc As Object

Dim oSheet As Object

Dim oCel As Object ‘ オブジェクト型の変数を定義する

oDoc=StarDesktop.CurrentComponent ’ 変数「oDoc」にこのドキュメントを指定する。

oSheet=oDoc.Sheets(0) ’ 変数「oSheet」に一番左のシートを指定する。

oCel=oSheet.getCellRangeByName(“A1″) ’ 変数「oCel」に一番左のシートのセル「A1」を指定する。

oCel.String= “これはテストです。” ’ 変数「oCel(即ちセル『A1』)」の文字列として、「これはテストです。」を入れる。

End Sub

このプログラムを実行すると、以下のようにセル「A1」に「これはテストです。」という文字が入力されます。

クリックで拡大します

上 の例では、「oSheet=oDoc.Sheets(0)」ということで、一番左のシートを指定しています。このように括弧内の番号で、左から何 番目のシートかを指定することができるわけですが、気を付けなければいけないのは、「0」から始まるということです。左から二番目のシートを指定する場合 は、「「oSheet=oDoc.Sheets(1)」、三番目のシートを指定するときは「「oSheet=oDoc.Sheets(2)」」となりま す。

また、シートを指定するときにシート番号ではなく、シート名を用いたい時もあると思います。その場合は、以下のように書くことになります。

oSheet=oDoc.getSheets.getByName(“Sheet1″) ’ 「Sheet1」が一番左のシートの場合、「oSheet=oDoc.Sheets(0)」と同じ意味になる。

このように、「getSheets.getByName」に続く「(” “)」の間に、シート名を記述することで、そのシートを指定することができます。

また、上述の例ではセル「A1」を指定していますが、「何列目何行目のセル」という指定の仕方もできます。その場合は、以下の通りとなります。

oCel=oSheet.getCellByPosition(0, 0) ’ oCel=oSheet.getCellRangeByName(“A1″)と同じ意味になる。

こ のように「getCellRangeByName」の代わりに、「getCellByPosition」と記述することで、「何列目何行目」のセ ルかということを指定することができます。ここでもシート番号の時と同じように0から始まっていることに注意してください。つまり、「1列目の1行目」 は、「(0, 0)」となります。

また、例えばVBAの場合は、「1行目1列目」と行、列の順番に指定するのに対して、これは列、行の順に指定するので、その点も注意が必要かもしれません。

oCel=oSheet.getCellByPosition(1, 3) ’ 「oCel」は、セル「B4」になる。

oCel=oSheet.getCellByPosition(4, 2) ’ 「oCel」は、セル「E3」になる。

oCel=oSheet.getCellByPosition(2, 5) ’ 「oCel」は、セル「C6」になる。