LibreOfficeマクロのサンプル紹介と解説 谷 列樹 2014/06/07 LibreOffice Productivity Suite
LibreOffice Productivity Suite プレゼンの概要 日経Linux誌でLibreOfficeマクロ記事を6回連載しました。 今回は記事に添付したサンプルの紹介とコードの解説をしようかと 思います。 LibreOffice Productivity Suite
LibreOffice Productivity Suite 発表者1 谷 列樹 (たに つらき) ググればいろいろでてくると思います。 プログラマ?SE?なんかもうわかりません。 雑誌の連載はつらい。 LibreOffice Productivity Suite
LibreOffice Productivity Suite 発表者2 LibreOfficeのマクロはかなーり前から触ってます。 でも気づいたら、多分のべ時間はExcel VBAのほうが長い。 LibreOffice Productivity Suite
LibreOffice Productivity Suite 第1回 マクロの概要 LibreOffice Productivity Suite
LibreOffice Productivity Suite マクロってそもそも何? LibreOffice Productivity Suite
LibreOffice Productivity Suite
LibreOffice Productivity Suite どうやって自動化するの? LibreOffice Productivity Suite
LibreOffice Productivity Suite UNOを利用する LibreOffice Productivity Suite
LibreOffice Productivity Suite UNOって何? LibreOffice Productivity Suite
LibreOffice Productivity Suite UNOとは、Universal Network Objectsの略で、LibreOffice自身の 実装上の重要なアーキテクチャであり、LibreOfficeのソフトウェアコ ンポーネントの基盤となっている。実際、例としてLibreOfficeのソー スコード(C++)を見てみると。。。。 LibreOffice Productivity Suite
LibreOffice Productivity Suite なるほどわからん!! LibreOffice Productivity Suite
LibreOffice Productivity Suite まぁとりあえず、難しいことは置いといて、 UNOとはLibreOfficeを操作する ためのAPI と思っても、それほど問題ない LibreOffice Productivity Suite
LibreOffice Productivity Suite UNOを使うと何がいいの? LibreOffice Productivity Suite
LibreOffice Productivity Suite 様々なプログラミング言語から、LibOの各コンポーネントを同じよう な要領で操作できる。 画面上の操作は、だいたい UNO経由でもできる LibreOffice Productivity Suite
LibreOffice Productivity Suite マクロ以外のプログラムからも UNOにアクセスできるの? LibreOffice Productivity Suite
LibreOffice Productivity Suite できます 拡張機能とか 外部プログラムによるLibOのオートメーションとか 言語も環境もいろいろ LibreOffice SDKとかオレオレバインディングとかCOMとか LibreOffice Productivity Suite
LibreOffice Productivity Suite でもなんかUNO使うのめんどく さそう 実際、ちょっとめんどい場合もある… LibreOffice Productivity Suite
LibreOffice Productivity Suite ODFの編集だけなら、UNO使 わなくても、いろいろ方法ある。 言語、環境によってはODFライブラリとか いっそZIPで展開してXMLを直接触っちゃう? LibreOffice Productivity Suite
LibreOffice Productivity Suite で、まとめるとどういうこと? LibreOffice Productivity Suite
LibreOffice Productivity Suite ようするにUNOにアクセスしたりODFを編集したりするプログラム は色んな形態で実装できるけど、 LibOユーザーにとっつきやすそうなのを マクロという名前でまとめてる って感じ LibreOffice Productivity Suite
LibreOffice Productivity Suite 絵にするとこんなイメージ ODFを操作するプログラム UNOにアクセスするプログラム マクロ 拡張機能 LibreOffice Productivity Suite
LibreOffice Productivity Suite 具体的には? LibreOffice Productivity Suite
LibreOffice Productivity Suite 画面のツール->マクロ->マクロ の管理に表示されてる4つの言 語と機能 LibreOffice Productivity Suite
LibreOffice Productivity Suite なんかいろいろありすぎて、頭 がフットーしそうだよおっ LibreOffice Productivity Suite
LibreOffice Productivity Suite もう深く考えずに、 マクロ ≒ LibreOffice Basic でいいんじゃね? なんだかんだで、一番標準的っぽいしね… LibreOffice Productivity Suite
LibreOffice Productivity Suite で、具体的にどうやってマクロ使 うの? LibreOffice Productivity Suite
LibreOffice Productivity Suite 割愛 LibreOffice Productivity Suite
LibreOffice Productivity Suite 割愛した内容が記事のメインだったけど、面白く無いので… こんな感じ↓ GUIの使い方とか、マクロの構成とか、設定類の説明 マクロの記録の使い方とかちょろっと この回はサンプル無し LibreOffice Productivity Suite
LibreOffice Productivity Suite 第2回 Calcの操作 LibreOffice Productivity Suite
LibreOffice Productivity Suite 記事の概要 LibreOffice Basicの文法の基本とか Calcを操作するマクロの基本 ドキュメント、シート、セルの操作とか 開発方法の紹介とか UNOのIDL(APIリファレンス) みんなだいすきMRI LibreOffice Productivity Suite
LibreOffice Productivity Suite サンプルのコンセプト 記事の内容にある程度沿ったものという縛り有り 一発目のサンプルなので、とにかくインパクト重視 LibreOffice Productivity Suite
LibreOffice Productivity Suite サンプルの動作を御覧ください BMP画像を読み込んでセルの背景色で再現するマクロ LibreOffice Productivity Suite
LibreOffice Productivity Suite ソースコードのポイント BMPデータを配列に変換する部分。BMPの仕様を調べたりしまし た。単純なので助かったwww 素直にRGBの数値で扱うだけじゃなくて濃淡をアスキーアートで表 現できるんじゃね? LibreOffice Productivity Suite
LibreOffice Productivity Suite 感想 実用性ない?ふざけすぎ? だから何! LibreOffice Productivity Suite
LibreOffice Productivity Suite 第3回 WriterとImpressの操作 LibreOffice Productivity Suite
LibreOffice Productivity Suite 記事の概要 Writerの操作 テキストの編集、検索、置換とか PDF変換とか Impressの操作 スライドの編集とか、画像オブジェクトの挿入とか LibreOffice Productivity Suite
LibreOffice Productivity Suite サンプルのコンセプト 業務とかに利用できそうな実用的なもの 前回は、強がってみたものの、やっぱり不安だった模様 すでに実装したものが手元にあったので流用 LibreOffice Productivity Suite
LibreOffice Productivity Suite サンプルの動作をご覧ください。 xls, doc, ppt, ods, odt, odp内の特定の文字列を別の文字列へ全 置換するマクロ LibreOffice Productivity Suite
LibreOffice Productivity Suite ソースコードのポイント 実務で使用することを前提に作っているので、エラー処理とかを頑 張ってます Fileの読み書きに失敗する、途中まで処理が進んでる最中にLibO が落ちる、なんてことを想定したエラー処理や仕様が全体の8割くら いを占めてます。 ちょっとがんばれば対応ファイル種はもっと増やせそう。 LibreOffice Productivity Suite
LibreOffice Productivity Suite 感想 実用的なマクロも書けるんやで (ドヤァ LibreOffice Productivity Suite
LibreOffice Productivity Suite 第4回 イベントとダイアログ LibreOffice Productivity Suite
LibreOffice Productivity Suite 記事の概要 イベント 画面上での設定 マクロでの取り扱い方 画面上で設定できないたぐいのイベント ダイアログ 画面上での作成 LibreOffice Productivity Suite
LibreOffice Productivity Suite サンプルのコンセプト 前回が真面目すぎたので、バランス的に今回はちょっとふざけたも のでもいいんじゃね? とはいえアイデアが枯渇した…かゆ…うま… LibreOffice Productivity Suite
LibreOffice Productivity Suite サンプルの動作を御覧ください ストップウォッチを表示する機能 LibreOffice Productivity Suite
LibreOffice Productivity Suite ソースコードのポイント シート上にコピペできるようにしてる(モードレスダイアログ) 時間がズレないように LibreOffice Productivity Suite
LibreOffice Productivity Suite 感想 前回に比べてしょぼい?せやな… LibreOffice Productivity Suite
LibreOffice Productivity Suite 第5回 拡張機能 LibreOffice Productivity Suite
LibreOffice Productivity Suite 記事の概要 拡張機能の基本的な作成方法 拡張機能内部の構成 メニューやツールバーへの実行ボタンの配置 ファイルの同梱や、ライセンスの同梱と表示 LibreOffice Productivity Suite
LibreOffice Productivity Suite サンプルのコンセプト 前回がちょっと手抜きだったので、もう少し良い感じのもの いかにも拡張機能って感じのもの 特定のドキュメントには依存せず、LibOの使い勝手を自分用にちょ っと良くするって方向性のもの でも本家の機能には取り込まれそうにない 既に実装したものが手元にあったので流用 LibreOffice Productivity Suite
LibreOffice Productivity Suite サンプルの動作をご確認ください 項目のインデントと、番号付けを行う拡張機能 WBSとか? LibreOffice Productivity Suite
LibreOffice Productivity Suite ソースコードのポイント アイコン画像はパブリックドメインで 番号付けは、もうちょっとエレガントに再帰処理とかやればよかった 気がするけどまーええか 設定方法に改良の余地あり LibreOffice Productivity Suite
LibreOffice Productivity Suite 感想 実用的な拡張機能も書けるん やで(ドヤァ LibreOffice Productivity Suite
LibreOffice Productivity Suite 第6回 VBA互換機能 LibreOffice Productivity Suite
LibreOffice Productivity Suite 記事の概要 基本的な動作、設定類など 簡単なVBAサンプルを用意し、動作の説明 動作しない場合の対応方法 VBAとしてExcel上で修正 LibreOffice BasicとしてLibO上で修正 などなど LibreOffice Productivity Suite
LibreOffice Productivity Suite 記事のポイント 動かないVBAも、技術的にはだいたい対応可能 ただ、愛と勇気と友情と努力と根性が必要かも LibreOffice Productivity Suite
LibreOffice Productivity Suite 感想 そもそも元のVBAの仕様やコードも、かなりめちゃくちゃなのが多い ので、手抜きせずに、一回そこから整理しなおしたほうが良い てかExcel2003→2010の移行も実はたいへんっす。みんな埋もれ た地雷に気づいてないだけでは? LibreOffice Productivity Suite
LibreOffice Productivity Suite 御清聴ありがとうございました。 質問等ございましたらどうぞ LibreOffice Productivity Suite