まがりかどの先に

まがりかどの先にはきっと良いことがあると信じ、目の前の人生の小路をてくてく歩き続ける日々の雑記です。

LibreOfficeマクロ操作ポイント (備忘録)

2017年08月06日 | PC弄りの日々
『日本一周歩こうかい』に登録している歩数データ使わせていただき、スタートからの累計や一日平均を出してウォーキングの励みにしてきた。
 
毎月行う手順も固まってきたので、集計に使っているLibreOfficeでの手順のマクロ化を行ってみた。
 
じきに忘れてしまうので、自分用にLibreOffice(Ver5.3)マクロ操作のポイント(手掛かり)を備忘録としてまとめてみた。
 
<マクロを使えるようにする>
LibreOffice(リブレオフィス)では、デフォルトで、『マクロの記録』は使えないようになっている。
 
 
 
ツール(T)→オプション(O)→LibreOfficeを開いて、「詳細」をクリック。
下段にある
オプションの機能のチェックボックスにチェックを入れる。
 

ツール(T)→マクロ(M)を見ると、マクロの機能がオンになり、自動記録も含め使えるようになっていると思う。
 
<マクロセキュリティ>
ツール(T)→オプション(0)→(LibreOffice(セキュリティ))→マクロセキュリティ(Y)でファイルを開いたときの自動実行のレベルを決められる。
 
<マクロの自動記録>
この機能を使うと、繰り返し行うような操作を自動記録してマクロに起こしてくれ、プログラムの知識がなくても、簡単な操作は自動化することができる。
LibreOfficeで、VBAでなじんできたこの機能が使えるのは大変ありがたい。
 
これに条件分岐などの使い方を覚えれば相当いろいろなことができるようになると思う。
 
LibreOfficeはエクセルとの互換性があるフリーオフィスとして有名だが、試してみたらVBAのマクロも動く。
もとろん、複雑なものは止まってしまうだろうが、簡単なものは問題ない。
 
B2セルに、「こんにちは。○○です」と表示するマクロを作って、その内容を比較してみた。
 
○LibreOffice カルクマクロ
 
REM  *****  BASIC  *****
 
sub konnitiha
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
 
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$B$2"
 
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
 
rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "StringName"
args2(0).Value = "こんにちは。カルクです。"
 
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args2())
 
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())
 
end sub
 
○エクセル VBA
 
Sub こんにちは()
 
    Range("B2").Select
    ActiveCell.FormulaR1C1 = "こんにちは。エクセルです。"
    Range("B3").Select
 
End Sub
 
さすが、VBAは圧倒的にシンプルで分かりやすい。
 
Sub プロシージャ名()

処理

End Sub

の構成は同じだが、LibreOfficeマクロではプロシージャ名に和文は使えないようだ。
(なんらかの方法で使えるようになるのかもしれないが、使った感じではダメだった)
 
 
 
今回は赤○内の4つの処理を別々に組み立て、VBAでは行える以下のような連結処理をやってみたが、
 
Sub hosusyukei()

    処理1
    処理2
    処理3
    処理4

End Sub
 
複数の操作を連続して行おうとすると、LibreOfficeは誤動作になってしまった。PCの処理能力が低いということもあるのかもしれないが、VBAほどサクサクとは動かない。
 
ならばと、上のようにボタンにマクロを埋め込み、都度処理にした。
 
<ボタン等へのマクロの関連づけ方>
 
 
 
表示(V)→ツールバー(T)→フォームコントロールでできた。
 
ツールバーにはフォームという表示がいくつかあり、ここに行きつくまでとても時間がかかってしまった。
 
7月分はこのツールで集計してみた。
ぎこちない動きだけれど、集計はとても楽になった&自己満足(^^)/。
 
============

1945(昭和20)年の今日、世界初の原爆が広島に投下されました。
広島平和記念日。
 
毎年来るこの日ですが、核の問題に対する取り組みは進んでいないように感じます。

世界最大の原電事故も福島で起こしているのになぜ世界に先立ち核を縮小する方向へ舵を切れないのでしょうか。

一部の人の利権、忖度と納税者である無辜な庶民の命を秤にかけられてはたまらないと思う広島平和記念日でした。
コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 遅くて安いのがあってもいい... | トップ | 北の大地、北海道に上陸! »
最新の画像もっと見る

コメントを投稿

PC弄りの日々」カテゴリの最新記事