Presentation is loading. Please wait.

Presentation is loading. Please wait.

LibreOfficeマクロのサンプル紹介と解説

Similar presentations


Presentation on theme: "LibreOfficeマクロのサンプル紹介と解説"— Presentation transcript:

1 LibreOfficeマクロのサンプル紹介と解説
谷 列樹 2014/06/07 LibreOffice Productivity Suite

2 LibreOffice Productivity Suite
プレゼンの概要 日経Linux誌でLibreOfficeマクロ記事を6回連載しました。 今回は記事に添付したサンプルの紹介とコードの解説をしようかと 思います。 LibreOffice Productivity Suite

3 LibreOffice Productivity Suite
発表者1 谷 列樹 (たに つらき) ググればいろいろでてくると思います。 プログラマ?SE?なんかもうわかりません。 雑誌の連載はつらい。 LibreOffice Productivity Suite

4 LibreOffice Productivity Suite
発表者2 LibreOfficeのマクロはかなーり前から触ってます。 でも気づいたら、多分のべ時間はExcel VBAのほうが長い。 LibreOffice Productivity Suite

5 LibreOffice Productivity Suite
第1回 マクロの概要 LibreOffice Productivity Suite

6 LibreOffice Productivity Suite
マクロってそもそも何? LibreOffice Productivity Suite

7 LibreOffice Productivity Suite

8 LibreOffice Productivity Suite
どうやって自動化するの? LibreOffice Productivity Suite

9 LibreOffice Productivity Suite
UNOを利用する LibreOffice Productivity Suite

10 LibreOffice Productivity Suite
UNOって何? LibreOffice Productivity Suite

11 LibreOffice Productivity Suite
UNOとは、Universal Network Objectsの略で、LibreOffice自身の 実装上の重要なアーキテクチャであり、LibreOfficeのソフトウェアコ ンポーネントの基盤となっている。実際、例としてLibreOfficeのソー スコード(C++)を見てみると。。。。 LibreOffice Productivity Suite

12 LibreOffice Productivity Suite
なるほどわからん!! LibreOffice Productivity Suite

13 LibreOffice Productivity Suite
まぁとりあえず、難しいことは置いといて、 UNOとはLibreOfficeを操作する ためのAPI と思っても、それほど問題ない LibreOffice Productivity Suite

14 LibreOffice Productivity Suite
UNOを使うと何がいいの? LibreOffice Productivity Suite

15 LibreOffice Productivity Suite
様々なプログラミング言語から、LibOの各コンポーネントを同じよう な要領で操作できる。 画面上の操作は、だいたい UNO経由でもできる LibreOffice Productivity Suite

16 LibreOffice Productivity Suite
マクロ以外のプログラムからも UNOにアクセスできるの? LibreOffice Productivity Suite

17 LibreOffice Productivity Suite
できます 拡張機能とか 外部プログラムによるLibOのオートメーションとか 言語も環境もいろいろ LibreOffice SDKとかオレオレバインディングとかCOMとか LibreOffice Productivity Suite

18 LibreOffice Productivity Suite
でもなんかUNO使うのめんどく さそう 実際、ちょっとめんどい場合もある… LibreOffice Productivity Suite

19 LibreOffice Productivity Suite
ODFの編集だけなら、UNO使 わなくても、いろいろ方法ある。 言語、環境によってはODFライブラリとか いっそZIPで展開してXMLを直接触っちゃう? LibreOffice Productivity Suite

20 LibreOffice Productivity Suite
で、まとめるとどういうこと? LibreOffice Productivity Suite

21 LibreOffice Productivity Suite
ようするにUNOにアクセスしたりODFを編集したりするプログラム は色んな形態で実装できるけど、 LibOユーザーにとっつきやすそうなのを マクロという名前でまとめてる って感じ LibreOffice Productivity Suite

22 LibreOffice Productivity Suite
絵にするとこんなイメージ ODFを操作するプログラム UNOにアクセスするプログラム マクロ 拡張機能 LibreOffice Productivity Suite

23 LibreOffice Productivity Suite
具体的には? LibreOffice Productivity Suite

24 LibreOffice Productivity Suite
画面のツール->マクロ->マクロ の管理に表示されてる4つの言 語と機能 LibreOffice Productivity Suite

25 LibreOffice Productivity Suite
なんかいろいろありすぎて、頭 がフットーしそうだよおっ LibreOffice Productivity Suite

26 LibreOffice Productivity Suite
もう深く考えずに、 マクロ ≒ LibreOffice Basic でいいんじゃね? なんだかんだで、一番標準的っぽいしね… LibreOffice Productivity Suite

27 LibreOffice Productivity Suite
で、具体的にどうやってマクロ使 うの? LibreOffice Productivity Suite

28 LibreOffice Productivity Suite
割愛 LibreOffice Productivity Suite

29 LibreOffice Productivity Suite
割愛した内容が記事のメインだったけど、面白く無いので… こんな感じ↓ GUIの使い方とか、マクロの構成とか、設定類の説明 マクロの記録の使い方とかちょろっと この回はサンプル無し LibreOffice Productivity Suite

30 LibreOffice Productivity Suite
第2回 Calcの操作 LibreOffice Productivity Suite

31 LibreOffice Productivity Suite
記事の概要 LibreOffice Basicの文法の基本とか Calcを操作するマクロの基本 ドキュメント、シート、セルの操作とか 開発方法の紹介とか UNOのIDL(APIリファレンス) みんなだいすきMRI LibreOffice Productivity Suite

32 LibreOffice Productivity Suite
サンプルのコンセプト 記事の内容にある程度沿ったものという縛り有り 一発目のサンプルなので、とにかくインパクト重視 LibreOffice Productivity Suite

33 LibreOffice Productivity Suite
サンプルの動作を御覧ください BMP画像を読み込んでセルの背景色で再現するマクロ LibreOffice Productivity Suite

34 LibreOffice Productivity Suite
ソースコードのポイント BMPデータを配列に変換する部分。BMPの仕様を調べたりしまし た。単純なので助かったwww 素直にRGBの数値で扱うだけじゃなくて濃淡をアスキーアートで表 現できるんじゃね? LibreOffice Productivity Suite

35 LibreOffice Productivity Suite
感想 実用性ない?ふざけすぎ? だから何! LibreOffice Productivity Suite

36 LibreOffice Productivity Suite
第3回 WriterとImpressの操作 LibreOffice Productivity Suite

37 LibreOffice Productivity Suite
記事の概要 Writerの操作 テキストの編集、検索、置換とか PDF変換とか Impressの操作 スライドの編集とか、画像オブジェクトの挿入とか LibreOffice Productivity Suite

38 LibreOffice Productivity Suite
サンプルのコンセプト 業務とかに利用できそうな実用的なもの 前回は、強がってみたものの、やっぱり不安だった模様 すでに実装したものが手元にあったので流用 LibreOffice Productivity Suite

39 LibreOffice Productivity Suite
サンプルの動作をご覧ください。 xls, doc, ppt, ods, odt, odp内の特定の文字列を別の文字列へ全 置換するマクロ LibreOffice Productivity Suite

40 LibreOffice Productivity Suite
ソースコードのポイント 実務で使用することを前提に作っているので、エラー処理とかを頑 張ってます Fileの読み書きに失敗する、途中まで処理が進んでる最中にLibO が落ちる、なんてことを想定したエラー処理や仕様が全体の8割くら いを占めてます。 ちょっとがんばれば対応ファイル種はもっと増やせそう。 LibreOffice Productivity Suite

41 LibreOffice Productivity Suite
感想 実用的なマクロも書けるんやで (ドヤァ LibreOffice Productivity Suite

42 LibreOffice Productivity Suite
第4回 イベントとダイアログ LibreOffice Productivity Suite

43 LibreOffice Productivity Suite
記事の概要 イベント 画面上での設定 マクロでの取り扱い方 画面上で設定できないたぐいのイベント ダイアログ 画面上での作成 LibreOffice Productivity Suite

44 LibreOffice Productivity Suite
サンプルのコンセプト 前回が真面目すぎたので、バランス的に今回はちょっとふざけたも のでもいいんじゃね? とはいえアイデアが枯渇した…かゆ…うま… LibreOffice Productivity Suite

45 LibreOffice Productivity Suite
サンプルの動作を御覧ください ストップウォッチを表示する機能 LibreOffice Productivity Suite

46 LibreOffice Productivity Suite
ソースコードのポイント シート上にコピペできるようにしてる(モードレスダイアログ) 時間がズレないように LibreOffice Productivity Suite

47 LibreOffice Productivity Suite
感想 前回に比べてしょぼい?せやな… LibreOffice Productivity Suite

48 LibreOffice Productivity Suite
第5回 拡張機能 LibreOffice Productivity Suite

49 LibreOffice Productivity Suite
記事の概要 拡張機能の基本的な作成方法 拡張機能内部の構成 メニューやツールバーへの実行ボタンの配置 ファイルの同梱や、ライセンスの同梱と表示 LibreOffice Productivity Suite

50 LibreOffice Productivity Suite
サンプルのコンセプト 前回がちょっと手抜きだったので、もう少し良い感じのもの いかにも拡張機能って感じのもの 特定のドキュメントには依存せず、LibOの使い勝手を自分用にちょ っと良くするって方向性のもの でも本家の機能には取り込まれそうにない 既に実装したものが手元にあったので流用 LibreOffice Productivity Suite

51 LibreOffice Productivity Suite
サンプルの動作をご確認ください 項目のインデントと、番号付けを行う拡張機能 WBSとか? LibreOffice Productivity Suite

52 LibreOffice Productivity Suite
ソースコードのポイント アイコン画像はパブリックドメインで 番号付けは、もうちょっとエレガントに再帰処理とかやればよかった 気がするけどまーええか 設定方法に改良の余地あり LibreOffice Productivity Suite

53 LibreOffice Productivity Suite
感想 実用的な拡張機能も書けるん やで(ドヤァ LibreOffice Productivity Suite

54 LibreOffice Productivity Suite
第6回 VBA互換機能 LibreOffice Productivity Suite

55 LibreOffice Productivity Suite
記事の概要 基本的な動作、設定類など 簡単なVBAサンプルを用意し、動作の説明 動作しない場合の対応方法 VBAとしてExcel上で修正 LibreOffice BasicとしてLibO上で修正 などなど LibreOffice Productivity Suite

56 LibreOffice Productivity Suite
記事のポイント 動かないVBAも、技術的にはだいたい対応可能 ただ、愛と勇気と友情と努力と根性が必要かも LibreOffice Productivity Suite

57 LibreOffice Productivity Suite
感想 そもそも元のVBAの仕様やコードも、かなりめちゃくちゃなのが多い ので、手抜きせずに、一回そこから整理しなおしたほうが良い てかExcel2003→2010の移行も実はたいへんっす。みんな埋もれ た地雷に気づいてないだけでは? LibreOffice Productivity Suite

58 LibreOffice Productivity Suite
御清聴ありがとうございました。 質問等ございましたらどうぞ LibreOffice Productivity Suite


Download ppt "LibreOfficeマクロのサンプル紹介と解説"

Similar presentations


Ads by Google