スポンサーリンク

OpenOffice.org Calcのセル内で,HYPERLINK関数だけでマクロを実行する方法 (表計算シート上にボタン塔を設置せずに,OpenOffice Basicを簡単に実行する)

Excel/Wordオフィス製品のTipsまとめへ


OOo Calcで,セル内のHYPERLINK関数だけでマクロを実行できる。

下記のように記述すればよい。

 =HYPERLINK("vnd.sun.star.script:Standard.Module1.Main?language=Basic&location=document";"クリックしてね")

これだけで,Module1のMain関数が呼び出される。

ボタンなどのフォームコントロールを設置せずにマクロを実行できるので便利だ。

引数を渡すこともできる

セルから関数に引数を渡すこともできる。

例えば,マクロ側で次のように,Mainに引数を定義すると・・・

Sub Main(s)
  msgbox s
End Sub

セルをクリックしたときには,下記のようなメッセージが表示される。

vnd.sun.star.script:Standard.Module1.Main?language=Basic&location=document

つまり,セル内のリンク文字列が,そのままMainの引数に渡っているのだ。

ということは,セルの位置に応じてマクロの処理を変えられる!!

ここで渡っている引数に,セルのアドレスを渡せば,
クリックされたセルの位置に応じて
マクロ側で処理を分岐させることもできる。

セル側で,下記のようにHYPERLINKを記述したとすると・・・

 =HYPERLINK("vnd.sun.star.script:Standard.Module1.Main?language=Basic&location=document&param="&ADDRESS(ROW();COLUMN());"hoge")

セル側のアドレスが C13 の場合,
セルをクリックして表示されるメッセージは

vnd.sun.star.script:Standard.Module1.Main?language=Basic&location=document&param=$C$13

となる。

&のあとのパラメータ名は自由に決められる。

たとえば,セルの列番号を渡すには

列番号だけを渡したいのであれば,セル側では

 =HYPERLINK("vnd.sun.star.script:Standard.Module1.Main?language=Basic&location=document&COL="&COLUMN();"hoge")

として,

マクロ側で下記のようにする。

Sub Main(s)
	' セルから渡されるパラメータの識別子
	Const token ="&col=" 
	' パラメータ文字列中で,値がある場所の位置
	pos = instr(s, token) + len(token)
	' 値の部分だけを文字列として切り出し
	arg_val = mid( s, pos )
	' 文字列から数値に変換
	msgbox val(arg_val)
End Sub

この場合,セルが存在する列番号が表示される。

参考資料:

OpenOffice.org Forum :: Hyperlink to execute macro
http://www.oooforum.org/forum/viewtop...

  • =IF(A1;HYPERLINK("vnd.sun.star.script:Standard.Module1.Main?language=Basic&location=document& param="&ADDRESS(ROW();COLUMN()); "Push Me")&T(STYLE("buttonActive"));"Disabled"&T(STYLE("buttonDisabled")))


[Solved] Calc basic macro to add a button to a cell (View topic) • Apache OpenOffice Community Forum
https://forum.openoffice.org/en/forum...

  • =HYPERLINK("vnd.sun.star.script:Standard.Module1.Main?language=Basic&location=document")


OOoBasic/Writer/HyperLink - ...?
http://hermione.s41.xrea.com/pukiwiki...

  • マクロなどを実行するときには vnd.sun.star.script:... 形式で指定します。

注意点

ただし,このテクニックは,
LibreOfficeの特定のバージョンではバグで動かない場合がある。

その場合は,ハイパーリンクではなく
ボタンを使ってマクロを実行するとよい。

Libreoffice Calc run macro with HYPERLINK - Stack Overflow
http://stackoverflow.com/questions/25...

  • This seems to be a bug in Calc. The protocol vnd.sun.star.script runs in hyperlink URLs in Writer still in version 4.2. But in Calc it runs not.


Hyperlink stopped working after upgrade - Ask LibreOffice
http://ask.libreoffice.org/en/questio...

  • I upgraded Ubuntu 13.04 to 13.10 and Libreoffice version is now 4.1.2.3. My problem is that now HYPERLINK function doesn't work anymore in my CALC sheet

Excel/Wordオフィス製品のTipsまとめへ