OpenOffice.org/LibreOffice Baseで起動時にフォームを自動で開く


OpenOffice.org/LibreOfficeのBaseを起動したときにメインメニューとなるフォームを自動で開くにはどうしたものかと困っていましたが、解決策を見つけました。

どうも以前はなかった、ドキュメントに関するイベント(開いた時、閉じる直前など)が準備されたようで、「文書を開いた時」というイベントに開きたいフォームを開くマクロを関係付けておけばいいだけでした。

このイベントがなかった昔はいろいろ面倒なことをして実現してたようで…
ありがたいことです。

さて、実現方法ですが、英語のフォーラムに書いてありました。
http://user.services.openoffice.org/en/forum/viewtopic.php?f=39&t=34147#p184762

英語読める人は読んじゃってください。短いので僕みたいな半端な英語力な人でも読めるしわかります。

英語よめねーよ、って人のために簡単に説明すると末尾に書いてあるようなマクロを作っておいて、Baseのメニューバーから「ツール」→「カスタマイズ」→「イベント」(タブ)と開いていって、「文書を開いた時」イベントにSb_OpenMainMenu( )を割り当てるだけです。

Base fileを開いたときに実行するマクロを割り当てる

Base fileを開いたときに実行するマクロを割り当てる

これで、あなたのベースファイル(.odb)を開けばすぐにメニュー画面が開くようになります。

'
' 起動時に特定のフォームを開くためのサブルーチン
'
Sub Sb_OpenMainMenu( )
	Dim ObjTypeWhat
	Dim ObjName As String
	ObjTypeWhat = com.sun.star.sdb.application.DatabaseObject.FORM
	ObjName = "FRM_メニュー" 'The name of the form you want to open at Base start-up, this needs to exist.
	If ThisDatabaseDocument.FormDocuments.hasbyname(ObjName) Then 'Check the form exists
		ThisDataBaseDocument.CurrentController.Connect() 'If the form exists connect to the database
		ThisDatabaseDocument.CurrentController.loadComponent(ObjTypeWhat, ObjName, FALSE) 'Open the form
	Else
		MsgBox "すみません。指定されたフォームが見つかりません。"+chr(10)+"Form Name = " & ObjName + chr(10)+"Check the details." , 48, "エラー"
	End if
End Sub  'Sb_OpenMainMenu( )