LibreOffice のマクロは全部 Basic で書き直すことにした[プログラミング]
(2020-07-27 01:58:47) by shinoda


< ページ移動: 1 2 >

以前からこのブログにもたまに書いていたが、LibreOffice Calc でサーバが吐き出したテキストファイルを読み込み集計、最後にその結果を元に印刷処理を行うマクロを Python で書いていたのだが、OpenOffice.org 系オフィススイーツの定番マクロ言語である Basic で書き直すことにした。

理由は色々あるので、別のエントリーにまとめようかな。

とりあえず、今日の日付をセルにセットするだけの簡単な処理を Python と Basic で書いてみたので貼っておく。どちらもまったく同じ動きをする。

def get_today(*args):

    doc = XSCRIPTCONTEXT.getDocument()

    # シートを選択
    sheet = doc.getSheets().getByName('Main')

    # 今日の日付の取得
    dt_now = (datetime.datetime.now()).strftime('%Y/%m/%d')

    # すでにセルに値が入っている時は更新するか確認する
    kaisai_nengetsu = sheet.getCellRangeByName('C3')

    if kaisai_nengetsu.String:
        msg_box = Bridge()
        res = msg_box.run_querydialog(title='開催年月日セット', message='すでに値がセットされています。\n上書きでセットしますか?')

        # res=2 はい res=3 いいえ
        if res != 2:    # 「はい」でなければ終了
            return

    kaisai_nengetsu.String = dt_now

次に Basic で書かれたマクロ。

Option Compatible

Sub get_now_date

Dim objDoc As Object
Dim objSheet As Object
Dim objCell As Object

objDoc = StarDesktop.CurrentComponent
objSheet = objDoc.Sheets.getByName("Main")

' 既にセルに値が入っていたら、上書きするかを聞く       
objCell = objSheet.getCellRangeByName("C3")

If objCell.String <> "" Then
If MsgBox ("すでに値がセットされています。" & vbCrLf & "上書きでセットしますか?", 292, "開催年月日セット") = 7 Then
        ' いいえのボタンが押された場合
return
End If
End If 

' 現在時刻の取得
objCell.String = Format(Now(), "yyyy/mm/dd")

End Sub

< ページ移動: 1 2 >


コメント(2)
次の記事へ >
< 前の記事へ
TOPへ戻る

Powered by
MT4i 3.0.8