目次

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で
 使うパラメータは、次のように決めています。

 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)

目次

inserted by FC2 system