LibreOffice のマクロは全部 Basic で書き直すことにした

以前からこのブログにもたまに書いていたが、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

以上。まあ、これだけ簡単な処理では特にどっちの言語で書いてもなんの問題もない。
見比べてもあまりおもしろいもんじゃないな(笑)

<追記>
コメントで「文字列リテラル中の \n は効かない」ということを教えていただきましたので、Option Compatible を指定して VBA compatibility モードをオンにし、vbCrLf 定数を連結する形に修正しました。16進文字"\x0D\x0A"を直打ちでもよさげですが、ついでに VBA compatibility モードを試してみたかったので。

トラックバック(0)

このブログ記事を参照しているブログ一覧: LibreOffice のマクロは全部 Basic で書き直すことにした

このブログ記事に対するトラックバックURL: https://blog.netandfield.com/mt/mt-tb.cgi/5677

コメント(2)

StarBasicやVBAでは文字列リテラル中に改行文字をエスケープシーケンスで入れることができない(ぉ

ご指摘、ありがとうございます。
昨夜は眠気に負けてしっかり確認していませんでしたが(それと老眼で(^^;)、確かに改行していない・・・
取り急ぎ修正しました。
またいろいろとご教授いただければ幸いです。

コメントする

このブログ記事について

このページは、shinodaが2020年7月27日 01:58に書いたブログ記事です。

ひとつ前のブログ記事は「ああ、温かいハモの湯引きが食べられて幸せ」です。

次のブログ記事は「カブトムシ異常発生」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。


月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら