2014/06/13(金) [n年前の日記]
#1 [pc] OpenOfficeのマクロを勉強中
OpenOffice というか LibreOffice のマクロを勉強中。ooo basic、という呼び方でいいのかな。
表内で挿入ができない件は、 _[Solved] Writer macro to insert an image into a table cell (View topic) - Apache OpenOffice Community Forum に説明があった。
以下はエラーが出る。
以下ならエラーが出ない。
◎ アルバムページ作成マクロを書きたい。 :
先日見かけたアルバム作成マクロは、画像の縦横比がおかしい状態で並べてしまうので、そこをどうにかできたらなと。しかし、マクロにパスワードがかけられているようで、内容を確認したり、修正したりはできないようで。
仕方ないので、自分で最初から書いてみようと思ったものの…。色々ハマっている状態。
仕方ないので、自分で最初から書いてみようと思ったものの…。色々ハマっている状態。
◎ 入門。ハローワールド。 :
ググった感じでは、そもそもどうやってマクロを書き始めればいいのか、そこからして分からなかったのだけど。
_Macroの一歩(「Macro使い」への8分間)
で Hello World の流れが解説されていて助かりました。ありがたや。
リストやら入力ボックスやらを並べたUIが欲しい場合は、ダイアログを作成する。
- LibreOffice Writer を起動。
- 文書を新規作成して、名前をつけて保存。
- ツール → マクロ → マクロの管理 → LibreOffice Basic。
- 左側のツリーで、現在開いてる文書を選択 → 右側の「新規作成ボタン」をクリック。任意の名前(モジュール名)を指定。
- ooo basic IDE が開く。
リストやら入力ボックスやらを並べたUIが欲しい場合は、ダイアログを作成する。
- ツール → マクロ → ダイアログの管理。
- 現在開いてる文書を選択 → 「新規作成」ボタン → 任意のダイアログ名を指定。
- ダイアログ名を選択 → 「編集」ボタンをクリック。
- ダイアログをデザインできるウインドウが開く。
◎ LibreOfficeの「Basic IDE オプション」が気になる。 :
LibreOffice のオプション項目を眺めていたら、「Basic IDE オプション」なる項目があったのだけど。コードの補完等、なんだか魅力的な項目が並んでいるものの、全項目がグレーアウトしていて、チェックを入れることができなくて。
コレは一体何だろう…。有効にすることが可能なのか、不可能なのか…。
もしかすると LibreOffice だからダメなのか、OpenOffice なら選べるのかと気になったので、OpenOffice もインストールして確認してみたのだけど。OpenOffice のほうは、そもそも「Basic IDE オプション」なる項目自体が存在しなかった。おそらく、LibreOffice で追加された部分、なのかな…。
コレは一体何だろう…。有効にすることが可能なのか、不可能なのか…。
もしかすると LibreOffice だからダメなのか、OpenOffice なら選べるのかと気になったので、OpenOffice もインストールして確認してみたのだけど。OpenOffice のほうは、そもそも「Basic IDE オプション」なる項目自体が存在しなかった。おそらく、LibreOffice で追加された部分、なのかな…。
◎ ハマった点。 :
- ダイアログ上のコンポーネントに対してアイテム追加や値を取得する処理を書く場合、Writer文書上からマクロを実行しないと正常動作しない。IDE上でF5キーを押して動作確認しようとしても、ダイアログ上のコンポーネントにアクセスできない。
- 表内にカーソルがある状態で、oDoc.Text.insertTextContent(oViewCursor, oImage, False) 等をしても Runtime Error になる。表の外で行うと動作する・挿入できるのだけど…。
表内で挿入ができない件は、 _[Solved] Writer macro to insert an image into a table cell (View topic) - Apache OpenOffice Community Forum に説明があった。
以下はエラーが出る。
oCursor = oTable.getCellByPosition(0,0).createTextCursor() oDoc.getText.insertTextContent( oCursor, oImage, False )
以下ならエラーが出ない。
oCell = oTable.getCellByPosition(0,0) oCell.getText.insertTextContent( oCell, oImage, False )
この記事へのツッコミ
[ ツッコミを読む(1) | ツッコむ ]
以上です。
Option→詳細→実験的(不安定)なオプションを有効にすると利用できましたよ