LibreOffice Calc Basic - 範囲の値をコピーする方法

◆copyRangeメソッド

 LibreOffice Basicでセルの値をコピーするには、copyRangeメソッドを使用します。
この場合、書式も一緒にコピーされます。
 次の例では、1枚目のシートのA1からB5までのデータをD1からE5にコピーしています。

Sub oCopyRange
  Dim oDoc As Object
  Dim oSheet As Object
  Dim oRangeAddress As Object
  Dim oCellAddress As Object

  oDoc=ThisComponent
  oSheet = oDoc.Sheets(0)
  oRangeAddress = oSheet.getCellRangeByName("A1:B5").getRangeAddress()
  rem D1に貼り付け
  oCellAddress = oSheet.getCellByPosition(3,0).getCellAddress() 
  oSheet.copyRange(oCellAddress, oRangeAddress)
End SUb

◆値貼付をしたい場合

 貼付先のセルのValueプロパティに貼付元のセルのValueプロパティを代入することで可能です。
次の例のようにイコール記号の左側に貼り付けたい先のセル、右側に貼付元のセルを指定すると書式はコピーされず、値貼付になります。
例えば、次のコードでは、セルA1の値をセルD1に値のみコピーします。

Sub CopyCell
    ThisComponent.Sheets(0).getCellByPosition(3,0).Value= _
        ThisComponent.Sheets(0).getCellByPosition(0,0).value
End Sub

次の例は、1枚目のシートのA1からB5までのデータをD1からE5に値貼付をする例です。

Sub oCopyRangeValue
    Dim oDoc As Object
    Dim oSheet As Object
    Dim oRangeAddress As Object
    Dim oCellAddress As Object
    dim i%
    dim j%

    oDoc=ThisComponent
    oSheet = oDoc.Sheets(0)
    For i=3 to 4 Step 1    rem 列
       For j=0 to 4 Step 1 rem 行
            oDoc.Sheets(0).getCellByPosition(i,j).Value= _
            oDoc.Sheets(0).getCellByPosition(i-3,j).value    
        Next j
    Next i        
End Sub

LibreOfficeの場合、セルの指定は(列、行)となりますので、iで列を、jで行を表しています。

▼ページトップへ