UbuntuのCalc(LibreOffice)をマクロ使えるようにする方法

こんにちは、minoruです。

Ubuntu(Xubuntu含む)でLibreOfficeの表計算アプリCalcを使っていて、マクロを使ってみたいと思ったのですが、最初は使えない状態になっていました。

なのでマクロを使えるようになるまでの一連の流れを書き残しておきます。

まず、JREのダウンロードとインストールが必要になります。JREとはJava Runtime Environmentの略で、要はJavaと言うプログラムを実行するために必要なモノだと考えてください。

私はこのJREとかJavaの知識が全く無いので、二の足を踏んで長年マクロを試さずにいたのですが、やってみた結果、まったく恐れる事はありませんでした。

JREのダウンロードはこちら

WindowsやMacなどと並んでLinuxの項目の所に「Linux x64」てのがあるので、それをダウンロードしました。

次に自分のPCのホームディレクトリ(フォルダ)に「java」というフォルダを新規作成しましたが、このフォルダの名前自体は自由に決めても問題ないはずです。

ダウンロードしたtar.gzファイルを上記の「java」フォルダに移動させ、以下のコマンドを実行しました。まずはCtrl+Alt+Tでターミナルと呼ばれる黒い画面を出して…

cd java
tar zxvf jre-8u73-linux-x64.tar.gz

赤字の部分はその時のバージョンなどによって数字などが違っている可能性がありますから、ダウンロードしたtar.gzファイルと一致するように入力しましょう。

これでJREのインストールは完了。

次にCalcを起動して、ツール→オプション→セキュリティ→マクロセキュリティ→信頼されたソース→信頼されたファイル位置(の項目の「追加」)をクリックする。

そして自分のPCのホームディレクトリなどを指定しておきましょう。

これは悪意のあるハッカーなどがマクロを勝手に仕込んで悪さが出来ないように、普通は署名と呼ばれる信頼性が担保されたマクロしか実行できない状態なのですが、これを自分の指定したフォルダ内にあるマクロは実行できるようにするための手続きです。

次に「ツール→マクロ→マクロの編集」と進み、適宜必要なマクロのスクリプトを作成しましょう。このあたりの解説は今回はしません。

マクロの書き方にはいくつも種類があるようですが、私はBasicのものを選びました。特に深い理由はありません。なんとなくです。

ちなみに私はセルのマス内にある文字をボタン一発で置換できるようにするために、こちらのページのスクリプトを参考にしました。

Sub ReplaceInUsedRange
oDocument = ThisComponent
oSheets = oDocument.Sheets
oSheet = oSheets.getByIndex(0)
oCellCursor = oSheet.createCursor()

oCellCursor.gotoStartOfUsedArea( False )
nFirstRow = oCellCursor.getRangeAddress().StartRow
nFirstCol = oCellCursor.getRangeAddress().StartColumn

oCellCursor.gotoEndOfUsedArea( False )
nLastRow = oCellCursor.getRangeAddress().EndRow
nLastCol = oCellCursor.getRangeAddress().EndColumn

oRange = oSheet.getCellRangeByPosition(nFirstCol,nFirstRow,nLastCol,nLastRow)
vDescriptor = oRange.createReplaceDescriptor()
With vDescriptor
.SearchString = "SearchString"
.ReplaceString = "ReplaceString"
.SearchWords = False
.SearchCaseSensitive = False
End With
nReplaced = oRange.replaceAll( vDescriptor )
MsgBox "Replaced " & nReplaced & " times."
End Sub

上記の"SearchString"と"ReplaceString"を自分のやりたい事が実現できるように書き換えただけで、うまく動作してくれました。

ただ、一番左にあるタブで実行した時しかちゃんと動作しなかったのですが、原因はよくわかりません。一番左にあるタブを開いている時に作成したマクロだから?でしょうか???原因は追々調べてみたいと思います。今はスクリプトコードを詳しく読んですらいない状態なので…

とにかくこの手の事案はコピペするだけで無事に動いてくれる事がとても助かる。感謝感謝。

マクロの記録

ツール→オプション→詳細を開く

マクロの記録を有効にする(限定的)にチェックをつけてOKボタンを押せば良い。あとはツール→マクロ→マクロの記録と勧めば記録が開始される。小さい停止用ボタンが画面に表示されているはずなので、終わる時にはそれを押す。

実行ボタンの設置

作成したマクロを実行するにはツール→マクロ→マクロを実行と進んで行き、目当てのマクロファイルを開いて実行するわけだが、いちいちそんな事はやってらんないので…

こちらのページを参考にしつつ、ちょっと内容を書き換えてCalcの画面上にマクロを実行するボタンを設置しました。

メニュー→表示→ツールバー→フォームコントロール

ボタンを作成し終えたら、そのボタンを右クリックしてコントロールのプロパティを選び、出てきたウィンドウの「イベント」タブで「マウスボタンを押した時」の所に実行したいマクロファイルを割り当てると良い。

それが終わったらフォームコントロールツールボックスにあるデザインモードをクリックしてオフにしてから、ツールボックスを閉じました。

ともかくこんな感じで私のマクロデビューは幕を閉じました。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする