LibreOffice Calc Basic - ワークシート選択フォームを作る方法

◆概要

このページは、Libre Officeのマクロでワークシート選択フォームを作る方法について記載しています。

まず、フォームを作成します。適当な大きさのフォームにリストボックスとコマンドボタンを貼り付けます。
フォームは、LibreOfficeのメニューから[ツール]-[マクロ]-[ダイアログの管理]で作成できます。 ここでは、ボタンの名前をbtnClose、タイトルはCloseとしました。

LibreOffice DaialogBox

 次に標準モジュールに次のコードを記述します。

REM  *****  BASIC  *****
Public oDialog as object

Sub ShowDiarog
    dim oSheets as object
    
    DialogLibraries.LoadLibrary("Standard")
    oDialog=CreateUnoDialog(DialogLibraries.Standard.Dialog1)
    oDialog.Title="ワークシート一覧"
    oSheets = ThisComponent.Sheets
    
    For i = 0 to oSheets.getCount() - 1  rem すべてのワークシートに対して繰り返す
        If oSheets(i).Name<> "data" Then  rem  dataというワークシートは一覧に表示しない
                 oDialog.getControl("ListBox1").AddItem(oSheets(i).Name,i)
       End If
    Next i
    
       oDialog.Execute()
       oDialog.Dispose()
End Sub
Sub CloseDialog
    oDialog.endExecute()
End Sub

 フォームの管理画面に戻って、btnCloseのイベント[実行時]にマクロ「CloseDialog」を割り当てます。

 次にリストボックスでシートが選択された時のマクロを標準モジュールに作成します。コードは以下の通りです。

Sub SelectWorksheet
    Dim Index     As Integer
    Dim Buf     As String
    Dim sUrl         As String
    
    oDoc = ThisComponent 
    oController = oDoc.getCurrentController() 
    oSheets = oDoc.getSheets()

    sUrl = oDialog.getControl("ListBox1").getSelectedItem() 
    If Not (sUrl = "") Then
            oController.setActiveSheet(oSheets.getByName(sUrl))        
    End If

End Sub

 フォームの管理画面に戻って、listboxのイベント[マウスボタンを押した時]にマクロ「SelectWorksheet」を割り当てます。

◆実行結果
ShowDiarogにカーソルを置き、F5キーを押下してください。ダイアログボックスが表示されます。

LibreOffice DaialogBox

◆サンプルのダウンロード
lboffice031.zip"(11KB) download




▼ページトップへ