目次
前
次
CalcとExcelの相互変換
CalcとExcelでは、セルの指定に違いがあります。
Calcでは、コンポーネント→シート→セルと
階層を下げていきます。
コンポーネントと最上位に属しているクラスを
用意してから、シートに下がり、セルへと到達。
BASICコードにより、次の記述でターゲットセルに
アクセスできます。
ThisComponent.Sheets(0).getCellRangeByName("A1")
ThisComponent.Sheets(0).getCellByPosition(0,0)
セルを示すラベルを行と列にアルファベット文字と
数字を組み合わせる方式と列と行の組合せで指定と
いう2種のアクセス方法が用意されています。
getCellRangeByNameとgetCellByPositionを、状況に
応じて、使い分けられる仕様。
対するExcelの考え方は、以下。
Excelでは、ブック→シート→セルと
階層を下げていきます。
ブックの中のアクティブシートという考え方で
次のように別シートのセルをアクセスします。
' set pointer
sx = 2
' clear cells
Sheets(sx).Cells(2,2).Value = ""
Excelでは、関数Sheetsのパラメータは1から。
ワークシートで見えているタブで示されている
シートの番号にあわせられています。
Calcの場合、関数Sheetsのパラメータは0から始まります。
CalcとExcelで同じコードを使いたい場合
仕様のちがいで、思わぬバグが出ることは
容易に想像できます。
関数Sheetsのパラメータは、変数で指定して
変数への格納値で差異を吸収するのがよいと
しておきましょう。
自分の場合、Sheets、Cells、getCellByPositionで
使うパラメータは、次のように決めています。
- sx : Sheets
- xr xc : Cells
- xc xr : getCellByPosition
Sheetsの場合は、 s というサフックスをつけて
Excelなら sx=1,2,3,.. としています。
Calcなら sx=0,1,2,.. になります。
セル、シートの扱いは、次のように覚えておけば充分。
Calc Sheets(n).getCellByPosition(c,r).Value
sx=0,1,2,.. xc=0,1,2,... xr=0,1,2,...
Excel Sheets(n).Cells(r,c).Value
sx=1,2,.. xr=1,2,... xc=1,2,...
Excelでは、BASICの仕様から添字は、1から開始。
Calcでは、Javaの仕様から添字は、0から開始。
Cellsは、行、列の順でパラメータを指定しますが
getCellByPositionは、列、行の順で指定。
(under construction)
目次
前
次