LibreOffice calc のマクロボタン

MS オフィス互換のLibreOffice calc ですが、MS Excel で書いた時刻表示のプロシージャを読み込むか、試みに実行してみました。

まず、セル”A1″=GETDATE() とユーザー定義関数を入力します。
[ツール]-[マクロ]-[マクロの管理]-[LibreOffice Basic…]から当該ブックの[standard]をクリックして[新規作成] で以下のプロシージャをコピペします。

Option VBASupport 1
Function GetDate() As Date
Application.Calculation = xlCalculationAutomatic
Application.Volatile
GetDate = Now()
End Function

Sub clock()
Dim counter As Long, crntAdd As String
Worksheets("sheet1").Activate
Worksheets("sheet1").Range("A1").Select

crntAdd = ActiveCell.address

Do Until crntAdd <> "$A$1"
If counter Mod 1000 = 0 Then
counter = 0
Worksheets("sheet1").Range("A1").Calculate
crntAdd = ActiveCell.address
DoEvents
End If
counter = counter + 1
Loop

End Sub

Private Sub フォーム_click()
Call clock
End Sub

[表示]-[ツールバー]-[フォームコントロール]から[コントロールツールバー]をポイントして「ツールバー」から「デザインモード」にします。

[フォーム]の挿入ボタンをクリックするとコントロールフォームが表示されます。(ちなみにボタンの名前変更は、右クリック→コントロール→全般タブ→タイトルから変えられます。)

「プッシュボタン」と書かれた[フォーム]を右クリックして[コントロール]から[イベント]-[実行時] の[…]をクリックして「アクションの割り当て」から「マクロセレクター」で[フォーム_click]マクロを割り当てます。

「デザインモード」を終了して名前を付けてブックを保存。[プッシュボタン]フォームをクリックすると時計が動きました。
難点は、MS Excel のthisworkbook.Activate が使えないことや、Workbook_Open という名前のプロシージャを作ると動作せず「マクロセレクター」から登録することなど不自由を感じました。
参考URL:

http://calibreblo.blogspot.jp/2011/05/blog-post.html

コメントを残す

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