OpenOffice.org/LibreOfficeのBaseを起動したときにメインメニューとなるフォームを自動で開くにはどうしたものかと困っていましたが、解決策を見つけました。
どうも以前はなかった、ドキュメントに関するイベント(開いた時、閉じる直前など)が準備されたようで、「文書を開いた時」というイベントに開きたいフォームを開くマクロを関係付けておけばいいだけでした。
このイベントがなかった昔はいろいろ面倒なことをして実現してたようで…
ありがたいことです。
さて、実現方法ですが、英語のフォーラムに書いてありました。
http://user.services.openoffice.org/en/forum/viewtopic.php?f=39&t=34147#p184762
英語読める人は読んじゃってください。短いので僕みたいな半端な英語力な人でも読めるしわかります。
英語よめねーよ、って人のために簡単に説明すると末尾に書いてあるようなマクロを作っておいて、Baseのメニューバーから「ツール」→「カスタマイズ」→「イベント」(タブ)と開いていって、「文書を開いた時」イベントにSb_OpenMainMenu( )を割り当てるだけです。
これで、あなたのベースファイル(.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( )