1 Excelマクロ習得のきっかけ
今は昔、もう二十数年も前のことですが、私がMicrosoft の表計算ソフト Excel のマクロを習得しようという気になった、一つのきっかけがあります。
Excelの操作方法を覚えようと、ある夜、自宅書斎で一冊のExcel解説書を読んでいました。秀和システム刊「パーフェクトマスターExcel2000」という本です。その本は、今でもまだ、手元に保管しています。
その本に、ほんの数ページの分量に過ぎないのですが、マクロの解説が載っていました。そこに、ある一つのマクロ例が掲載されていたのです。
どういうものかというと、数値の合計を求める数式が入力されたリスト(表)をコピーして、値のみを貼り付けるマクロです。表の中の合計セルには、「=SUM(A1:C1)」と、数式が入力されています。ご存知のように、数式が入った表をコピーして、「値のみ」を貼り付けると、数式が削除されます。その結果、合計数値のみが残ります。これで、式が消えた表ができ上がります。その操作を、マクロ化したものでした。
私は、そのマクロ例を書物上で追体験して、「へぇ、マクロって便利ぃ!」と、ものすごく感動しました。そして、そのときの強烈な感動が、マクロ習得のきっかけになりました。
すぐにExcelマクロの入門書を買い込んで、集中的にその習得に没頭しました。VBAコードを自分で書くことができ、ExcelマクロやWordマクロを使ってデータ処理などができる、そんな今の自分があるのも、その感動体験が起源になっているのです。
Excelの操作方法を覚えようと、ある夜、自宅書斎で一冊のExcel解説書を読んでいました。秀和システム刊「パーフェクトマスターExcel2000」という本です。その本は、今でもまだ、手元に保管しています。
その本に、ほんの数ページの分量に過ぎないのですが、マクロの解説が載っていました。そこに、ある一つのマクロ例が掲載されていたのです。
どういうものかというと、数値の合計を求める数式が入力されたリスト(表)をコピーして、値のみを貼り付けるマクロです。表の中の合計セルには、「=SUM(A1:C1)」と、数式が入力されています。ご存知のように、数式が入った表をコピーして、「値のみ」を貼り付けると、数式が削除されます。その結果、合計数値のみが残ります。これで、式が消えた表ができ上がります。その操作を、マクロ化したものでした。
私は、そのマクロ例を書物上で追体験して、「へぇ、マクロって便利ぃ!」と、ものすごく感動しました。そして、そのときの強烈な感動が、マクロ習得のきっかけになりました。
すぐにExcelマクロの入門書を買い込んで、集中的にその習得に没頭しました。VBAコードを自分で書くことができ、ExcelマクロやWordマクロを使ってデータ処理などができる、そんな今の自分があるのも、その感動体験が起源になっているのです。
2 LibreOffice Calcマクロ
我が家では、Microsoft Office から LibreOffice(リブレオフィス)へと乗り換えることにしています。それでは、上記1と同じことを、LibreOffice の表計算ソフトCalcマクロでやるとどうなるでしょうか。それをブログ記事としてまとめ、ここに記録しておくことにしました。
LibreOfficeは無料で利用できるオフィスアプリですが、Microsoft製品と同様のマクロ機能があるのです。
すでにマクロを使っている方にとっては、本記事は目新しいものではないでしょう。けれども、マクロの体験がない方には少しは参考になるかもしれません。この記事は、そのような方に読んでもらえればいいなぁ、と思っています。そして、二十数年前の私と同じ感動を覚えてくれる方が、もし現れるのであれば、幸いです。
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」)を付けて、いったんファイルとして保存します。
成績表の作成ができたら、任意の名前(例えば、「成績表.ods」)を付けて、いったんファイルとして保存します。
【2】セキュリティレベル設定
初期設定のままでは、マクロを実行できません。そこで、マクロ実行前に、マクロのセキュティを設定します。この作業は最初の1回のみ必要で、次からは不要です。
設定手順は、次のとおりです。
- Calcを起動し、メニューバーの中の[ツール]をクリック
- [ツール]メニュー中の[オプション]をクリック
- [オプション]ダイアログが開くので、[LibreOffice]項目中の[セキュリティ]をクリック
- [マクロセキュリティ]の項目中の[マクロセキュリティ]ボタンをクリック
- [マクロセキュリティ]ダイアログが開くので、「中(M)」を選択
- [OK]ボタンをクリック
- いったん、ファイルをを閉じて開き直す
4 コードの記述場所
LibreOffice Calcの中に、マクロコードを記述する場所(Basicエディタ)が用意されています。
そのマクロコードの記述場所(Basicエディタ)を開く手順は、次のとおりです。
そのマクロコードの記述場所(Basicエディタ)を開く手順は、次のとおりです。
- Calcを起動
- メニューバーの中の[ツール]をクリック
- [ツール]メニュー中の、[マクロ]-[マクロの管理]-[Basic]と順にクリック
- [Basicマクロ]ダイアログが開く
- [マクロの記録先]の中に表示されているドキュメント名(現に開いているファイル名)、本例でいくと「成績表.ods」をクリック
- [新規作成]をクリック
- [新しいモジュール]ダイアログの名前欄に「Module1」となっているのを確認
- [OK]ボタンをクリック
上記手順によって開く画面が、[Basicエディタ]です。そのエディタにコードを記述することになります(後述5のコードも、この場所に記述)。
5 コードの記述
上記4に記載のBasicエディタに、次のコードを記述します。
下記コードを、Basicエディタにコピー&ペーストするのが簡単でしょう。
REM ***** BASIC *****Sub Main_BasicDim oDataArray As VariantWith ThisComponent.Sheets(0)oDataArray = .getCellRangeByName("A3:G6").getDataArray().getCellRangeByName("A3:G6").setDataArray(oDataArray)End WithEnd Sub
上掲のコードは、LibreOffice Basic 言語を用いて記述したものです。
これを、VBA(Visual Basic for Applications)で記述するとなると、次のコードになります。
REM ***** BASIC *****Option VBASupport 1With Thisworkbook.Worksheets(1).Range("A3:G6").Copy.Range("A3").PasteSpecial Paste:=xlValuesEnd WithEnd Sub
上記の2種類のコード、LibreOffice Basicコードも、VBAコードも、どちらでも実行の結果は同じです。「LibreOffice Basicコードなんて分からない。」、「VBAのコードしか理解できない。」、そういう方はVBAの方を選ぶとよいでしょう。
なお、上記マクロの実行は、自己責任でお願いします。コード内容を理解できない方であっても、実行は自己責任でお願いします。当方は、一切、実行結果に責任は負えません。
ただし、ただしですよ・・・
・・・ドキュメントに保存のマクロは、いつでも簡単に廃棄できます。ですから、コードの意味を全て理解できない場合であっても、勉強のためにどんどん気軽に試してみるのがよいかと思います。悪意あるコードを埋め込むなんて卑劣なことは、決してやっていません。そんなことをするような輩でないことは、これまでのブログ経歴からも分かってもらえると思います。そこは、信用してもらえるはずです。
なお、上記マクロの実行は、自己責任でお願いします。コード内容を理解できない方であっても、実行は自己責任でお願いします。当方は、一切、実行結果に責任は負えません。
ただし、ただしですよ・・・
・・・ドキュメントに保存のマクロは、いつでも簡単に廃棄できます。ですから、コードの意味を全て理解できない場合であっても、勉強のためにどんどん気軽に試してみるのがよいかと思います。悪意あるコードを埋め込むなんて卑劣なことは、決してやっていません。そんなことをするような輩でないことは、これまでのブログ経歴からも分かってもらえると思います。そこは、信用してもらえるはずです。
6 マクロの実行
Basicエディタにコードの書き込みができたら、いよいよ、その実行です。
コードを記述したBasicエディタを開いて、下図の「マクロ実行」のボタンをクリックします。これでマクロが実行されます。
コードを記述したBasicエディタを開いて、下図の「マクロ実行」のボタンをクリックします。これでマクロが実行されます。

マクロの実行ボタンを押したら、CalcのSheet1に戻り、成績表のセルの中味を確認してみてください。合計列には、数式が消えて集計結果だけが入力されているはずです。また、判定列には、同じく数式がなくなり、「×」や「合格」という文字列だけが残っています。
例えば、F3セルを見てみると、入力されていた「=SUM(C3:E3)」の式が消えて、「968」という数字に代わっています。G3セルを見てみると、入力されていた「=IF(F3>1200,"合格","×")」の式が消えて、「×」という文字列に置き代わっています。
これが、マクロ実行の結果です。
ね、便利ですねぇ。少しでも、便利さが分かってもらえたでしょうか。
例えば、F3セルを見てみると、入力されていた「=SUM(C3:E3)」の式が消えて、「968」という数字に代わっています。G3セルを見てみると、入力されていた「=IF(F3>1200,"合格","×")」の式が消えて、「×」という文字列に置き代わっています。
これが、マクロ実行の結果です。
ね、便利ですねぇ。少しでも、便利さが分かってもらえたでしょうか。
7 最後に
Microsof Office がなくても、無料のLibreOfficeがあります。どうでしょう、高額のMicrosoft Officeから、LibreOfficeに乗り換えませんか。そして、LibreOfficeでマクロを利用しませんか?
マクロが使えると便利ですよぉ。いったんマクロを作っておくと、人間(ユーザー)の手作業に代わって、PC(コンピュータ)が自動処理をしてくれます。しかも、どんなに膨大な量のデータであっても、正確に、かつ一瞬でやってくれます。
マクロが使えると便利ですよぉ。いったんマクロを作っておくと、人間(ユーザー)の手作業に代わって、PC(コンピュータ)が自動処理をしてくれます。しかも、どんなに膨大な量のデータであっても、正確に、かつ一瞬でやってくれます。
goosyun

