OpenOffice3.2 Basic で Calc のセルのハイパーリンクを作る方法です。
とりあえず、Sheet1.B2セルに、Sheet2.A2セルへのリンクするサンプルコートです。
'リンク元シート取得
Dim oSheet As Object
oSheet = StarDesktop.CurrentComponent.Sheets.getByName("Sheet1")
Dim oCell As Object
'リンク先シート
Dim LinkSheetName As String
LinkSheetName = "Sheet2"
'DispatchHelper サービスを利用するための準備
dim documentFrame as Object
dim documentView as Object
dim dispatcher as Object
documentView = ThisComponent.CurrentController
documentFrame = documentView.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
'セル取得
oCell = oSheet.getCellByPosition( 1 , 1 )
'セルの文字列(ここで定義した文字列はリンクにならない)
oCell.Formula = "ここはリンク文字れではない。"
'ハイパーリンクのためのプロパティを定義
dim setHyperLinkArgs(1) as new com.sun.star.beans.PropertyValue
'ハイパーリンクであること定義
setHyperLinkArgs(0).Name = "Hyperlink.Text"
'リンクに表示する文字列
setHyperLinkArgs(0).Value = " ここはリンク文字。"
setHyperLinkArgs(1).Name = "Hyperlink.URL"
'リンク先。今回は Sheet2.A2 セルになる。
setHyperLinkArgs(1).Value = "#" & LinkSheetName & ".A2"
documentView.Select oCell
'実行
dispatcher.executeDispatch(documentFrame, ".uno:SetHyperlink", "", 0, setHyperLinkArgs())
要はDispatchHelper サービスを使って、ハイパーリンク用のプロパティに値をいれるだけで構わないようです。
ただ問題なのは、ハイパーリンクを設定すると数式が入らないということです。
Excelだと、ハイパーリンクを張るセルに数式が入ってもうまく動作しますが、どうもCalcはそれが無理っぽいですね。
つまり、数式が入っているセルにはハイパーリンクは事実上張れないということですね。
あと、Excelではセル全体がリンクになりますが、Calcはセル内の任意の文字だけリンクにする(Valueプロパティ)ということができます。
参考: