Pythonでマクロ(0):LibreOfficeのマクロを書いてみる

久ぶりのPythonの話題である。

LibreOfficeはそのマクロをPythonで書くことができるが、pythonが元々機能として持っていたprint文などがそのままでは使えない。このままではユーザインタフェースやデバッグ機能に欠けた状況でPythonマクロはあまり魅力的ではない。

調べてみるとprint文などに対応するユーザフェース機能をマクロが使うモジュールとして用意することできることがわかった。少し面白くなった。まずマクロのサンプルを示す:


import uno
import screen_io as ui


def my_first_macro_calc():
    doc = XSCRIPTCONTEXT.getDocument()
    for num, column in enumerate(['A1', 'A2', 'A3']):
        cell = doc.Sheets[0][column]
        cell.Value = num 
        ui.Print('OK?')
    return

このマクロの保存場所は(windowsの場合)

C:\Users\~~\AppData\Roaming\LibreOffice\4\user\python

である。

これはLibreOfficeの表計算ソフトCalcのシート番号0のシートの’A1’欄に数値0、’A2’欄に数値1、’A3’欄の数値2を入れる簡単なマクロである。

ui.Print(‘OK’)は数値を書き込む毎に警告窓を出す。ここではデバッグ機能として使っている。この関数Printはscreen_ioモジュールで定義されていて、import screen_io as uiとしてインポートされてされている。import unoがシステムモジュールのインポートであるのに対してimport screen_ioはユーザモジュールのインポートである。このモジュールのの実体はここにある。このモジュールの保存場所は

C:\Users\~~\AppData\Roaming\LibreOffice\4\user\python\pythonpath

である。

このモジュールはbasic言語で作ったモジュールのラッパーらしい。このbasic言語のモジュールの実体もここにある。このモジュールも保存する。保存する場所はLibreOfficeのプルダウン・メニュのマクロで

マイマクロ->standard->module1と進み、編集ボタンで編集画面になるので実体をペーストし、保存する(モジュール名をuiScriptsとすることを忘れないで)。

以上でPrint関数を含むマクロを実行できる環境ができあがった。

最後にPrint関数の実行結果の画面を示す:

【蛇足】pythonでマクロを書くときの注意:

  • indentはTabキーではダメで半角スペースを使う。
  • Pythonでよく使うprint文は使えない
  • 登録しようとしているマクロに構文エラーがあるとマクロの登録すらできない。しかもその構文エラーを知る手掛りがない

 

 

LibreOffice7.1を使ってみる

PowerPCのMacで使えたオフィス系のフリーソフトにLibreOffice4.0があった。そのMacを諦めてwindowsに移行した。LibreOfficeで作った資料も移行したがwindowsにあるMicrosoftのオフィス系のソフトでこの資料が読み込めないことが判明。

その対策としてLibreOfficeの最新版ではMicrosoftへの対応が改善されているかもしれないと思い、windowsにLibreOfficeの最新版7.1.2をインストールして使ってみた。

結論から言うとLibreOfficeの最新版は非常によくできていて、MicrosoftのOfficeは全く必要ない。

最近のMicrosoftのOfficeはLibreOfficeのデータを読み込めるようになっているという。互換性の面でもLibreOfficeの使用には問題なした。

LibreOfficeは

  • Writer:文書処理
  • Calc:表計算
  • Draw:図形描画
  • Math:数式表示処理
  • Impress:プレゼンテーション
  • Base:データベース

の6個のソフトウエアからなっている。特にWriter, Calc, Draw そしてMathの間のシームレスな統合処理は印象的である。さらにマクロ処理にPythonも使えることは面白いと思った。

簡単な統合処理の例を以下に示す:

Libre_sample

 

黒部・立山関連の文庫本

黒部立山アルペンルートの開通の記事を読んでいたら、以前かなり熱心に黒部立山関連の本を読んでいたことを思い出した。本棚を眺めて見つけたのが以下の文庫本である:

  • 「黒部渓谷」(冠松次郎著:平凡社)

黒部渓谷に本格的に人の手が入るまえの渓谷を跋渉した記録である。大正から昭和初期の黒部渓谷の様子がわかる。

  • 「劔岳 点の記」(新田次郎著:文春文庫)

劔岳山頂に三角点を設置する目的で未踏峰の登頂を遂げた測量員の物語。

  • 「高熱隧道」(吉村昭著:新潮文庫)

黒部第三発電所建設に必要な軌道トンネル・水路トンネル掘削は温泉湧出地帯の難工事であった。昭和11年ごろの話。

「黒部の太陽」(黒部第四発電所)も読んだが興味が持てず文庫本は手放してしまった。

広瀬川河川敷のハナモモ

昨日(4月18日)は雨もあがり、青空がみえたので近くの米ヶ袋の広瀬川河川敷にあるハナモモの様子を見に行った。ご覧のように赤い蕾は大分大きくなったが開花までは後数日はかかるかなという状況だった。

広瀬川河川敷のハナモモ(4月18日)

AppleMailからWindowsのSylpheedへの移行

使用を諦めたMac Miniのメール(AppleMail)の受信したメールとアドレス帳をWindowsのメーラーSylpheedに移動させたときのメモである。

このMac Miniは時代物でAppleがIntelプロセッサへの切り替えを行った2006年以前のPowerPCプラットフォームの最後に近いG4を使ったMacである。このMacとWindowsはSmbaでファイル共有が実現されており、これを使ってデータの移動をした。

  1. メール本体の移動:AppleMailを開き受信箱を選択、メールボックス・メニュの「メールボックスをアーカイブ」を選択する。実行するとINBOX.mboxという名前のファイルができる。これをWindowsへ転送する。Windowsのsylpheedを開き「メールのインポート」を開き、メールの保存形式としてUNIX(mbox)を選択して実行する。
  2. アドレス帳の移行:Macのアドレス帳を開き、環境設定でvCardのヴァージョンが3.0であることを確認する。「アーカイブへの書き出し」->「vCardへの書き出し」を実行。VCardという名前のファイルができる。これをWindowsへ転送する。Sylpheedのアドレス帳を選び、VCardホルダの下に新規のホルダを作る。転送されたvCardファイルをそこに展開する。

Windowsと異なりMacではファイルはファイル本体とそのファイルの属性を記述したファイルの二本立てであることに注意すること。例えばvCardファイルはその属性ファイル_.vCardからなる。

壁と空:見事な対比

今朝の新聞の記事のタイトルである。

「立山黒部アルペンルート」が15日に冬季閉鎖を終え全線開通したというニュースである。

全線開業50周年を迎えた今年の開通の日は晴天で、室堂(海抜2400メートル)では雪壁が聳え立つ「雪の大谷」が出現。青空との見事なコントラストを演出した。画像はここ

ダンゴムシをペットに!?:長崎「世界のダンゴムシ展」

今週の日曜版の記事のタイトルである。

以前このブログでもダンゴムシの歩様について触れた。

そのダンゴムシを集めた展示会が長崎バイオパークで開かれている。19種類ものダンゴムシが展示されている。ダンゴムシの成虫は7対14本の脚を持ちエビやカニに近い。

われわれが身近に見かける黒いダンゴムシは「オカダンゴムシ」と呼ばれるもので世界中にいる。ペットとして人気なのは透き通った白色で「マジックポーション」という品種。「ボルネオコブコシビロダンゴムシ」は胸部後方にコブがある。「ジェストロダンゴムシ」(イタリア)は点々がいっぱいあるダンゴムシである。

ところでダンゴムシの歩様であるが、7対14本の脚を同様な順序で動かして歩くのか、これが問題である。左右対称に脚を持つ生き物の歩き方には対称歩様と非対称歩様がある。このことの詳しい説明はここ。馬を例にとると馬の速歩は対称歩様であるが駈歩は非対称歩様である。ダンゴムシも左右対称な脚を持つのでこの歩様の問題が出てくる。ダンゴムシは非対称歩様らしい。