つれづれ電脳記(日くらしPCに向かひて)

つれづれなるままに、日くらしPCに向かひて、その悪戦苦闘ぶりをそこはかとなく書き付くるおじさん。たまに雑談[管理人:goosyun]

つれづれなるままに、日くらしPCに向かひて、デジタル関係の悪戦苦闘ぶりをそこはかとなく書き付くるおじさんです。
たまに雑談してます。連絡・問い合わせフォームは、ページ最下部に置いています。[著者(運営人):goosyun]

(当ブログには本文中に広告リンクが含まれています。)

無料のLibreOfficeにしませんか?マクロが便利ぃ!

1 Excelマクロ習得のきっかけ

 今は昔、もう二十数年も前のことですが、私がMicrosoft表計算ソフト Excel のマクロを習得しようという気になった、一つのきっかけがあります。
 Excelの操作方法を覚えようと、ある夜、自宅書斎で一冊のExcel解説書を読んでいました。秀和システム刊「パーフェクトマスターExcel2000」という本です。その本は、今でもまだ、手元に保管しています。
 その本に、ほんの数ページの分量に過ぎないのですが、マクロの解説が載っていました。そこに、ある一つのマクロ例が掲載されていたのです。
 どういうものかというと、数値の合計を求める数式が入力されたリスト(表)をコピーして、値のみを貼り付けるマクロです。表の中の合計セルには、「=SUM(A1:C1)」と、数式が入力されています。ご存知のように、数式が入った表をコピーして、「値のみ」を貼り付けると、数式が削除されます。その結果、合計数値のみが残ります。これで、式が消えた表ができ上がります。その操作を、マクロ化したものでした。
 私は、そのマクロ例を書物上で追体験して、「へぇ、マクロって便利ぃ!」と、ものすごく感動しました。そして、そのときの強烈な感動が、マクロ習得のきっかけになりました。
 すぐにExcelマクロの入門書を買い込んで、集中的にその習得に没頭しました。VBAコードを自分で書くことができ、ExcelマクロやWordマクロを使ってデータ処理などができる、そんな今の自分があるのも、その感動体験が起源になっているのです。

2 LibreOffice Calcマクロ

 我が家では、Microsoft Office から LibreOfficeリブレオフィス)へと乗り換えることにしています。それでは、上記1と同じことを、LibreOffice表計算ソフトCalcマクロでやるとどうなるでしょうか。それをブログ記事としてまとめ、ここに記録しておくことにしました。
 LibreOfficeは無料で利用できるオフィスアプリですが、Microsoft製品と同様のマクロ機能があるのです。
 すでにマクロを使っている方にとっては、本記事は目新しいものではないでしょう。けれども、マクロの体験がない方には少しは参考になるかもしれません。この記事は、そのような方に読んでもらえればいいなぁ、と思っています。そして、二十数年前の私と同じ感動を覚えてくれる方が、もし現れるのであれば、幸いです。

3 マクロの準備

 マクロの準備として、次の【1】と【2】の作業を行うこととします。まず【1】において、マクロでの処理対象となるドキュメント(ファイル)を作成します。そして、次の【2】で、セキュリティレベルの設定をします。
【1】シート上に成績表データを入力
 LibreOffice Calcを起動し、Sheet1上に、下図のようなデータを入力して、合否判定成績表を作ります。
 (・・・「合計」列及び「判定」列には数値ではなく、後述の数式を入れます。)

合否判定成績表
 上掲の「合否判定成績表」には、次の「数式」を入力します。
  (1) 「合計」列(「F3」セル~「F6」セル)   =SUM(C3:E3) ・・・等
  (2) 「判定」列(「G3」セル~「G6」セル)  =IF(F3>1200,"合格","×") ・・・等
 Excelをお使いの方ならよく見慣れた、SUM関数や IF関数を使った数式です。この数式によって、合計列には集計結果の数値、それから判定列には、「×」「合格」の文字列が、それぞれ表示されます。
 成績表の作成ができたら、任意の名前(例えば、「成績表.ods」)を付けて、いったんファイルとして保存します。
【2】セキュリティレベル設定
 初期設定のままでは、マクロを実行できません。そこで、マクロ実行前に、マクロのセキュティを設定します。この作業は最初の1回のみ必要で、次からは不要です。
 設定手順は、次のとおりです。
  1. Calcを起動し、メニューバーの中の[ツール]をクリック
  2. [ツール]メニュー中の[オプション]をクリック
  3. [オプション]ダイアログが開くので、[LibreOffice]項目中の[セキュリティ]をクリック
  4. [マクロセキュリティ]の項目中の[マクロセキュリティ]ボタンをクリック
  5. [マクロセキュリティ]ダイアログが開くので、「中(M)」を選択
  6. [OK]ボタンをクリック
  7. いったん、ファイルをを閉じて開き直す

4 コードの記述場所

 LibreOffice Calcの中に、マクロコードを記述する場所(Basicエディタ)が用意されています。
 そのマクロコードの記述場所(Basicエディタ)を開く手順は、次のとおりです。
  1. Calcを起動
  2. メニューバーの中の[ツール]をクリック
  3. [ツール]メニュー中の、[マクロ]-[マクロの管理]-[Basic]と順にクリック
  4. [Basicマクロ]ダイアログが開く
  5. [マクロの記録先]の中に表示されているドキュメント名(現に開いているファイル名)、本例でいくと「成績表.ods」をクリック
  6. [新規作成]をクリック
  7. [新しいモジュール]ダイアログの名前欄に「Module1」となっているのを確認
  8. [OK]ボタンをクリック
 上記手順によって開く画面が、[Basicエディタ]です。そのエディタにコードを記述することになります(後述5のコードも、この場所に記述)。

5 コードの記述

 上記4に記載のBasicエディタに、次のコードを記述します。
 下記コードを、Basicエディタにコピー&ペーストするのが簡単でしょう。 
REM  *****  BASIC  *****
Sub Main_Basic
    Dim oDataArray As Variant 
    With ThisComponent.Sheets(0)
       oDataArray = .getCellRangeByName("A3:G6").getDataArray()
   .getCellRangeByName("A3:G6").setDataArray(oDataArray)
 End With
End Sub

 上掲のコードは、LibreOffice Basic 言語を用いて記述したものです。

 これを、VBAVisual Basic for Applications)で記述するとなると、次のコードになります。
REM  *****  BASIC  *****
Option VBASupport 1
  With Thisworkbook.Worksheets(1)
   .Range("A3:G6").Copy
   .Range("A3").PasteSpecial Paste:=xlValues
  End With
End Sub

 

 上記の2種類のコード、LibreOffice Basicコードも、VBAコードも、どちらでも実行の結果は同じです。「LibreOffice Basicコードなんて分からない。」、「VBAのコードしか理解できない。」、そういう方はVBAの方を選ぶとよいでしょう。
 なお、上記マクロの実行は、自己責任でお願いします。コード内容を理解できない方であっても、実行は自己責任でお願いします。当方は、一切、実行結果に責任は負えません。
 ただし、ただしですよ・・・
 ・・・ドキュメントに保存のマクロは、いつでも簡単に廃棄できます。ですから、コードの意味を全て理解できない場合であっても、勉強のためにどんどん気軽に試してみるのがよいかと思います。悪意あるコードを埋め込むなんて卑劣なことは、決してやっていません。そんなことをするような輩でないことは、これまでのブログ経歴からも分かってもらえると思います。そこは、信用してもらえるはずです。

6 マクロの実行

 Basicエディタにコードの書き込みができたら、いよいよ、その実行です。
 コードを記述したBasicエディタを開いて、下図の「マクロ実行」のボタンをクリックします。これでマクロが実行されます。

マクロ実行ボタン
 マクロの実行ボタンを押したら、CalcのSheet1に戻り、成績表のセルの中味を確認してみてください。合計列には、数式が消えて集計結果だけが入力されているはずです。また、判定列には、同じく数式がなくなり、「×」や「合格」という文字列だけが残っています。
 例えば、F3セルを見てみると、入力されていた「=SUM(C3:E3)」の式が消えて、「968」という数字に代わっています。G3セルを見てみると、入力されていた「=IF(F3>1200,"合格","×")」の式が消えて、「×」という文字列に置き代わっています。
 これが、マクロ実行の結果です。
 ね、便利ですねぇ。少しでも、便利さが分かってもらえたでしょうか。

7 最後に

 Microsof Office がなくても、無料のLibreOfficeがあります。どうでしょう、高額のMicrosoft Officeから、LibreOfficeに乗り換えませんか。そして、LibreOfficeでマクロを利用しませんか?
 マクロが使えると便利ですよぉ。いったんマクロを作っておくと、人間(ユーザー)の手作業に代わって、PC(コンピュータ)が自動処理をしてくれます。しかも、どんなに膨大な量のデータであっても、正確に、かつ一瞬でやってくれます。
    goosyun