OOo Basic である事をしたいが為のメモ(基礎,Wait,セル移動,背景色設定)

実験せずともPukiwikiに情報があった.

基礎

C言語で言う main(){/* 主処理をここに書く */} の様な部分.「文書へのアクセス権を入手する」というコメントがある.

REM  *****  BASIC  *****

sub Main
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem 主処理をここに書く

end sub

指定のセルを選択する

後で書いている処理も同様だが,変数を設定し,dispatcher.executeDispatch() で実施するという流れが見られる.

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$B$1"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

Wait ステートメント [実行時]

説明も例文も OOo Basic ヘルプからコピペ.動作確認は「OOo Basic で OOo Calc の選択セルを右へ進み,下へ進み,行頭へ進む」の一部をサブルーチン化 - BiBoLoGを改造して取った.

プログラムの実行に割り込みをかけ、ミリ秒単位の指定時間だけ待機させます。

Sub ExampleWait
Dim lTick As Long
lTick = GetSystemTicks()
wait 2000
lTick = (GetSystemTicks() - lTick)
MsgBox "" & lTick & " Ticks" ,0,"The pause lasted"
End Sub

右のセルへ移動するサブルーチン

rem **右のセルへ移動するサブルーチン
Sub goRightSelectCell(dispatcher,document)
rem ----------------------------------------------------------------------
dim args(1) as new com.sun.star.beans.PropertyValue
args(0).Name = "By"
args(0).Value = 1
args(1).Name = "Sel"
args(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args())

End Sub

下のセルへ移動するサブルーチン

rem **下のセルへ移動するサブルーチン
Sub goDownSelectCell(dispatcher,document)
rem ----------------------------------------------------------------------
dim args(1) as new com.sun.star.beans.PropertyValue
args(0).Name = "By"
args(0).Value = 1
args(1).Name = "Sel"
args(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args())

End Sub

行頭のセルへ移動するサブルーチン

rem **行頭のセルへ移動するサブルーチン
Sub goStartOfRowSelectCell(dispatcher,document)
rem ----------------------------------------------------------------------
dim args(1) as new com.sun.star.beans.PropertyValue
args(0).Name = "By"
args(0).Value = 1
args(1).Name = "Sel"
args(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoToStartOfRow", "", 0, args())

End Sub

背景色を設定するサブルーチン

rem **背景色を設定するサブルーチン
sub setColor(dispatcher,document,r,g,b)
rem ----------------------------------------------------------------------

dim args(0) as new com.sun.star.beans.PropertyValue
args(0).Name = "BackgroundPattern.BackColor"
args(0).Value = rgb(r,g,b)

dispatcher.executeDispatch(document, ".uno:BackgroundPattern", "", 0, args())

End Sub