『日本一周歩こうかい』に登録している歩数データ使わせていただき、スタートからの累計や一日平均を出してウォーキングの励みにしてきた。
毎月行う手順も固まってきたので、集計に使っているLibreOfficeでの手順のマクロ化を行ってみた。
じきに忘れてしまうので、自分用にLibreOffice(Ver5.3)マクロ操作のポイント(手掛かり)を備忘録としてまとめてみた。
<マクロを使えるようにする>
LibreOffice(リブレオフィス)では、デフォルトで、『マクロの記録』は使えないようになっている。
LibreOffice(リブレオフィス)では、デフォルトで、『マクロの記録』は使えないようになっている。
ツール(T)→オプション(O)→LibreOfficeを開いて、「詳細」をクリック。
下段にあるオプションの機能のチェックボックスにチェックを入れる。
下段にあるオプションの機能のチェックボックスにチェックを入れる。
ツール(T)→マクロ(M)を見ると、マクロの機能がオンになり、自動記録も含め使えるようになっていると思う。
<マクロセキュリティ>
ツール(T)→オプション(0)→(LibreOffice(セキュリティ))→マクロセキュリティ(Y)でファイルを開いたときの自動実行のレベルを決められる。
ツール(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 ----------------------------------------------------------------------
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"
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 = "こんにちは。カルクです。"
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())
dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())
end sub
○エクセル VBA
Sub こんにちは()
Range("B2").Select
ActiveCell.FormulaR1C1 = "こんにちは。エクセルです。"
Range("B3").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)年の今日、世界初の原爆が広島に投下されました。
広島平和記念日。
1945(昭和20)年の今日、世界初の原爆が広島に投下されました。
広島平和記念日。
毎年来るこの日ですが、核の問題に対する取り組みは進んでいないように感じます。
世界最大の原電事故も福島で起こしているのになぜ世界に先立ち核を縮小する方向へ舵を切れないのでしょうか。
一部の人の利権、忖度と納税者である無辜な庶民の命を秤にかけられてはたまらないと思う広島平和記念日でした。
※コメント投稿者のブログIDはブログ作成者のみに通知されます