月別アーカイブ: 2014年1月

Libre:027 新しいブックを作成する

ブックという概念がないので、あたらしいシートを作成するを参照のこと

#追記

新しいファイルを作成すると読み替えることにしました。

ここに、書いてあるコードを借用します。

どうも引数1,2はそのままでいいようです。

引数3,4はダミーです。

 

メソッドの引数はそれぞれ次のようになります。

1:開くファイルの URL (システムパスは不可)

2:開くフレーム名指定 (通常:_blank)

3:フレーム検索フラグ(0:Autoでいいとも!)

4:オプション指定(Dummyでいい)

 

Sub ksNewComponet

Dim objNewDoc As Object

objNewDoc = StarDesktop.loadComponentFromURL _
(“private:factory/scalc”, “_blank”, 1, Array())

End Sub


 

 

引数4に関して:

以下のようにすると、読み込み専用で開きます。

しかし、あまり意味ないか。

Dim aArgs(0) As New com.sun.star.beans.PropertyValue
aArgs(0).Name = “ReadOnly”
aArgs(0).Value = True

 

Dim objNewDoc As Object
objNewDoc = StarDesktop.loadComponentFromURL _
(“private:factory/scalc”, “_blank”, 1, aArgs())


Libre:025 ワークシート名を変更する

シートを指定してシート名を変更する場合

Sub ksChangeSheetName


Dim objDoc As Object, objSheet as Object
objDoc = ThisComponent
objSheet=objDoc.Sheets(0) <−−シート1番目を変える
objSheet.Name=”test”

End Sub

 

Activeになっているシート名を変更する場合

アクティブシートを取得してからNameプロパティを変更する。

 

sub ksChangeCurrentSheetName

dim activeSheet as Object
dim doc as object

doc = ThisComponent.sheets

activeSheet = ThisComponent.CurrentController.ActiveSheet
activeSheet.Name = “testCurrent”

end sub

Libre:024 ワークシートの数を数える

シートオブジェクトを取得した後、

getCount()メソッドでシートの数を取得する。

 

Sub ksSheetCounter
dim objSheets as object
dim number as integer
dim displayText as string

objSheets= ThisComponent.Sheets
number = objSheets.getCount()
displayText = “Sheet枚数 : ” & number
msgbox(displayText, 0, “”)

End Sub

Libre:023 パスワードによるシートの保護

シートの保護は、シートオブジェクトを

取得して、Protectメソッドで設定します。

Excelと同様に、大文字と小文字の区別するようですので、

注意が必要です。

 

sub ksProtect

dim activeSheet as Object
dim doc as object

doc = ThisComponent.sheets

activeSheet = ThisComponent.CurrentController.ActiveSheet

‘シートの保護
activeSheet.Protect(“password”)

‘シートの保護の解除
‘activeSheet.Unprotect (“password”)

end sub

Libre:022 位置を指定して罫線を引く

罫線を引く位置は、CellRangeオブジェクトの

BottomBorder、TopBorder, LeftBorder, RightBorderプロパティを

それぞれしてしてあげます。

 

Sub ksRangelLine()
Dim objDoc As Object
Dim objCtrl as Object
Dim selRange as Object, cellRange as Object
Dim Border as Object

objDoc = ThisComponent
objCtrl = objDoc.getCurrentController()
selRange = objCtrl.getActiveSheet().getCellRangeByName( “B3:D5” )
objCtrl.select( selRange )


cellRange = objDoc.CurrentSelection(0)

‘ Border1 Property
Border = cellRange.LeftBorder
Border.Color = RGB(255, 0, 0)
Border.InnerLineWidth = 30
Border.LineStyle = 1


‘ Set Border
with cellRange
.BottomBorder = Border
.LeftBorder = Border
‘.TopBorder = Border
‘.RightBorder = Border

end with

End Sub

Libre:021 様々な種類の罫線を引く

セルの下辺に様々罫線を引きます。

罫線はSolid Single LineとSolid Double Line

があります。 

sub ksUnderLine

Dim objBorderLine1 As New com.sun.star.table.BorderLine
Dim objSheet As Object
Dim objCell As Object

With objBorderLine1
.Color = RGB(0, 0, 0)
.OuterLineWidth = 88
End With

objSheet = ThisComponent.CurrentController.ActiveSheet
objCell = objSheet.getCellRangeByName(“B2”)

objCell.BottomBorder = objBorderLine1

end sub

 

二重線にするには、OuterLineWidthと共にInnerLineWidthを設定してあげます。

Widthは以下のテーブルを参照してください。

http://hermione.s41.xrea.com/pukiwiki/index.php?OOoBasic%2FCalc%2Fborder 

からの引用です。

 

pt InnerLineWidth OuterLineWidth LineDistance
なし 0 0 0
0.05 0 2 0
1.00 0 35 0
2.50 0 88 0
4.00 0 141 0
5.00 0 176 0
二重線
pt InnerLineWidth OuterLineWidth LineDistance
1.10 2 2 35
2.60 2 2 88
3.00 35 35 35
7.50 88 88 88
3.55 2 35 88
5.05 2 88 88
6.55 2 141 88

 

 

 

 

参考1参考2

次にDotやDashを引く方法を紹介します。

LineStyle =>0 : Line / 1 : Dot( 点線 ) / 2 : Dash( 破線 )

Sub ksCellLine()


Dim objDoc As Object
Dim objCtrl as Object
Dim selRange as Object, cellRange as Object, objCell as Object
Dim Border as Object

objDoc = ThisComponent
objCtrl = objDoc.getCurrentController()
objCell = objCtrl.getActiveSheet().getCellRangeByName(“B2”)
objCtrl.select(objCell)
cellRange = objDoc.CurrentSelection(0)

‘ Border Property
Border = cellRange.LeftBorder
Border.Color = RGB(255, 0, 0)
Border.InnerLineWidth = 30
Border.LineStyle = 1 

‘ Set Border

cellRange.BottomBorder = Border

End Sub

Libre:019 アクティブシートを削除する

アクティブシートの名前を取得してから、

removeByNameメソッドで削除します。

ただし、この方法だと確認のメッセージなどでませんので、

注意が必要です。

 

sub ksRemoveActiveSheet

dim activeSheet as Object
dim doc as object

doc = ThisComponent.sheets

activeSheet = ThisComponent.CurrentController.ActiveSheet
doc.removeByName( activeSheet.name )

end sub