LibreOffice Base の Macro をチャットGPTに聞いてみた

投稿者: | 2024年9月22日

WinでもMacでもLinuxでも使えるLibreOfficeです。BaseをMySQLのフロントエンド(JDBC経由)として使っています。フォームにボタンを配置してmacroを与えて便利に使えるはずなのですが、プログラミングの技がない…

日付け毎に対処すべき顧客をリストアップした表形式のフォームAがあって、アイテム行をクリックしたあと設置したボタンを押せば、その顧客の詳細がわかるフォームBに遷移するマクロが欲しかった。最初はサブフォームを使おうとしたが、right join のためか、レコードの編集はできないようで、編集用フォームを使わざるを得ない。

Chat GPTに「表形式のFormAのレコード値を参照してFormBの当該レコードを表示するLibreOfficeのマクロを教えてください」ときいてみた。

Sub ShowSelectedRecordInFormB
    Dim oFormA As Object
    Dim oFormB As Object
    Dim oDocument As Object
    Dim recordID As Variant
    Dim selectedRow As Integer
    
    ' 現在のドキュメントを取得
    oDocument = ThisDatabaseDocument
    
    ' FormAのインスタンスを取得
    oFormA = oDocument.FormDocuments.getByName("FormA").getForm()
    
    ' 選択された行を取得
    selectedRow = oFormA.getSelectedIndex()
    
    ' 選択された行から主キーを取得
    recordID = oFormA.getByName("ID").Value ' フィールド名を変更
    
    ' FormBを開く
    oFormB = oDocument.FormDocuments.getByName("FormB").getForm()
    
    ' フィルタを設定して該当レコードを表示
    oFormB.Filter = "ID = " & recordID ' フィールド名を変更
    oFormB.FilterRecords()
    
    ' FormBを表示
    oFormB.open()
End Sub

ふむふむ、便利になったものだ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です