このサイトにcellの削除スクリプト例があります。
http://openoffice3.web.fc2.com/OOoBasic_Calc.html#OOoIR2d
その中で、次のコードを単に転記して実行しました。
セルの削除(列全体が左方向に移動) Sub oDeleteCell
しかし、削除にならず、単なる列挿入のようになってしまいました。
CellRangeAddressの設定、com.sun.star.sheet.CellDeleteMode.COLUMNS も役立っていないようです。
こちらのマニュアルも列全体の挿入削除だけで、Rangeを指定してその範囲を削除して詰める方法が載っていません。
http://www.ja-fukuoka.or.jp/blog/archives/2012/05/exceltocalkpdf.php
どのようにすればよろしいのでしょうか。
Libreofficeのマクロの使い方が記載されているサイトがありましたら、お教えください。
質問文にあるスクリプト例のメソッドが間違っています。
最後から2行目のinsertCellsのところを、removeRangeに、COLUMNSをLEFTに書き換えてみて下さい。
Sub oDeleteCell Dim Doc As Object Dim Sheet As Object Dim CellRangeAddress As New com.sun.star.table.CellRangeAddress Dim iStart as integer Dim iRows as integer Dim iSheetindex as integer iSheetindex = 0 iStart = 0 iRows=3 Sheet =ThisComponent.getSheets().getByIndex(iSheetindex) CellRangeAddress.Sheet = iSheetindex CellRangeAddress.StartColumn = 0 CellRangeAddress.StartRow = iStart CellRangeAddress.EndColumn = 2 CellRangeAddress.EndRow = iStart + iRows-1 Sheet.removeRange(CellRangeAddress, com.sun.star.sheet.CellDeleteMode.LEFT) End Sub
この方法でやったのですが、削除にならず、単なる列挿入のようになってしまいました。
Sub oDeleteCell
Dim Doc As Object
Dim Sheet As Object
Dim CellRangeAddress As New com.sun.star.table.CellRangeAddress
Dim iStart as integer
Dim iRows as integer
Dim iSheetindex as integer
iSheetindex = 0
iStart = 0
iRows=3
Sheet =ThisComponent.getSheets().getByIndex(iSheetindex)
CellRangeAddress.Sheet = iSheetindex
CellRangeAddress.StartColumn = 0
CellRangeAddress.StartRow = iStart
CellRangeAddress.EndColumn = 2
CellRangeAddress.EndRow = iStart + iRows-1
Sheet.insertCells(CellRangeAddress, com.sun.star.sheet.CellDeleteMode.COLUMNS)
End Sub
これでは、うまくできませんでした。
質問文にあるスクリプト例のメソッドが間違っています。
最後から2行目のinsertCellsのところを、removeRangeに、COLUMNSをLEFTに書き換えてみて下さい。
Sub oDeleteCell Dim Doc As Object Dim Sheet As Object Dim CellRangeAddress As New com.sun.star.table.CellRangeAddress Dim iStart as integer Dim iRows as integer Dim iSheetindex as integer iSheetindex = 0 iStart = 0 iRows=3 Sheet =ThisComponent.getSheets().getByIndex(iSheetindex) CellRangeAddress.Sheet = iSheetindex CellRangeAddress.StartColumn = 0 CellRangeAddress.StartRow = iStart CellRangeAddress.EndColumn = 2 CellRangeAddress.EndRow = iStart + iRows-1 Sheet.removeRange(CellRangeAddress, com.sun.star.sheet.CellDeleteMode.LEFT) End Sub
少し訂正しました。
CellRangeAddressの範囲だけ詰める場合は、CellDeleteMode.LEFTみたいですね。
ありがとうございました。
黒の地の中に示されている記述で、思う位置(範囲)を左詰めできました。
Sheet.removeRange(CellRangeAddress, com.sun.star.sheet.CellDeleteMode.LEFT)
少し訂正しました。
2012/11/11 23:39:55CellRangeAddressの範囲だけ詰める場合は、CellDeleteMode.LEFTみたいですね。
ありがとうございました。
2012/11/12 08:55:27黒の地の中に示されている記述で、思う位置(範囲)を左詰めできました。
Sheet.removeRange(CellRangeAddress, com.sun.star.sheet.CellDeleteMode.LEFT)