実現したいこと
お世話になります。
libreoffice basicで5秒おきに実行する関数を造りたいのですがうまくいきません。
発生している問題・分からないこと
検索しても該当の情報がわからず、AIに聞くも下記のような関数でエラーが発生します。
libreoffice
1Sub timer_start() 2 3Dim oTimer As Object 4 5 If IsNull(oTimer) Then '二重起動防止 6 oTimer = CreateUnoService("com.sun.star.awt.XTimer") 'タイマーサービスを作成 7 oTimer.addActionListener(CreateUnoListener("aaa_", "com.sun.star.awt.XActionListener")) 'イベントハンドラを設定 8 oTimer.Start(5000) 'インターバルを5000ミリ秒(5秒)に設定してタイマーを開始 9 End If 10End Sub 11 12Sub timer_event(oEvent As Object) 13 'タイマーイベントの処理 14 MsgBox "Timerイベント発生!", 0, "確認" 15End Sub 16 17Sub timer_stop() 18 If Not IsNull(oTimer) Then 19 oTimer.Stop() 20 RemoveHandler oTimer.Timer, "timer_event" 'イベントハンドラを削除 21 oTimer.Dispose() 22 oTimer = Null 23 End If 24End Sub 25
該当のソースコード
特になし
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
上記のコードでは「オブジェクト変数は設定できていません。」というエラーになります。
ご助力お願いいたします。
waitは都合上考慮しません。
補足
特になし
コメントありがとうございます。〇〇とはなんでしょうか?リンク先はクレジットカードですよね多分関係ないと思います。
@質問者 maruguchiさん
先のコメントは遠まわしの広告投稿と思いますのでスルーで。
LibreOfficeのBASICと言うことですが、詳細なバージョンや実行環境(OS等)を記載しましょう。※記載する際はこの欄ではなく、質問文を編集、追記してください。
こういうケースはバージョンや実行環境によって挙動が異なることも多いです。
と、思ったらマルチポストだったのですね。
[Timerを使って5秒おきに実行する関数を造りたい - LibreOffice] https://ask.libreoffice.org/t/timer/115259
回答する気が萎えてしまったのでコメントのみですが、
1. "com.sun.star.awt.XTimer"と言うサービスは無いのでCreateUnoServiceは失敗するだろうし、
https://api.libreoffice.org/docs/idl/ref/namespacecom_1_1sun_1_1star_1_1awt.html
※LibreOfficeの前身のOpenOfficeとかではサポートされていたのかもしれません。
2. 定周期で指定の関数にディスパッチするようなサービスはLibreOffice BASICには無いと思いますよ。
https://ask.libreoffice.org/t/there-is-no-timer-service-why/100666
コメントありがとうございます。構造的に作れなさそうですね。残念です。
回答を頂ける方がどちらにもいると限ったわけではありません。一つのプラットフォームに限定するよりいいと思いました。気に障ったようですいません。

あなたの回答
tips
プレビュー