プログラミングやるならExcelマクロ(VBA)?Googleスプレッドシート(GAS)

  • URLをコピーしました!

「プログラミングやるなら何がいいでしょうか?」と聞かれることは多いです。
そんなとき、私は、Excelマクロ(VBA)をすすめています。
仕事に直結し、わかりやすく、はじめやすく、日ごろから慣れたExcelを使うからです。
他のプログラミング言語GoogleスプレッドシートのGASと比較してみます。

※自宅にて iPhoneX

Excelマクロ(VBA)とGoogleスプレッドシート(GAS)の違い

Excelは、ご存知のとおり、Microsoftが提供しているもので、広く普及しています。
有料ではあれ、PCに入っていることも多いです。
このExcelをプログラミングで動かすのがExcelマクロ(VBA)。
※VBAとは言語(英語、日本語、フランス語などのようなもの)で、マクロとは機能のことをいいますが、厳密に使い分けされていないことも多く、私は、「Excelマクロ」と呼んでいます。開催しているセミナー名もExcelマクロプログラミング入門セミナーです。

EX-IT_03

Excelさえあれば、無料で使うことができ、手軽にはじめることができます。
私が1997年にはじめて就職した職場、総務省統計局でもExcelがあり、仕事を早く終わらせたい、ミスをなくしたいという一心からこのExcelマクロをみつけ、覚えました。
以来、20年近く私のパートナーです。
雇われない雇わない生き方をできているのもこのマクロのおかげといえます。
確実に人はいらなくなりますから。

一方、GoogleのExcelといわれているGoogleスプレッドシート。
ネット上で無料で使えます。
Excelと違うところは多いのですが、それはまた次の機会に。
このGoogleスプレッドシートでもプログラミングはできます。
GAS(Google App Script)といわれるものです。

EX-IT_02

ネット上、ブラウザで無料というのが大きな利点で、他のGoogleサービス(Gmail、ドキュメント、フォームなど)やネットサービスとも連携できます。
当ブログの人気記事であるこの記事もGASを使ったものです。

ただ、
・プログラミング言語のわかりやすさ
・プログラミングのはじめやすさ
・ExcelがGoogleスプレッドシートより使われている
ことから、ExcelマクロをGASよりすすめています。

とはいえ、異なる言語を勉強することは、いい鍛錬になるので、Excelマクロをはじめるにしても、ぜひ両方の最初の一歩をやってみましょう。
それぞれ解説します。

Excelマクロ(VBA)のはじめ方と最初の一歩

Windows版のExcelを前提に解説します。

VBE(Excelマクロを書くソフト)を開く

Excelを開き、Alt+F11(AltキーとF11キーを同時押し)で、このような画面になります。
これが、Excelマクロを書くソフト、VBE(VisualBasicEditor)です。
(VBAは、VisualBasicAplicationの略)

もう一度、Alt+F11を押すと、Excelに戻ります。
Alt+F11は、ExcelとVBAを切り替える操作なのです。

EX-IT_05

 

VBEのオプションを設定

最初の一歩をやるとはいえ、設定を変えておきましょう。
VBEでAlt→T→O(Alt、T、Oと1つずつ押す)で、[ツール]の[オプション]を開き、次のようにチェックをして、Enterキーを押します。

 

 

 

 

 

 

 

 

 

 

 

 

Excelマクロを書く場所を準備する

その後、Alt→I→Mでこういった画面にします。
「Option Explicit」は、先ほどのオプションを変更した影響です。

EX-IT_07

ここにプログラムを書いていきます。
上下の空白行は、好みで変えて大丈夫です。

 

Subを書く

Excelマクロでは、多くの場合、
Sub マクロ名()

End Sub
が1つのプログラムの区切りです。
このSubとEnd Subの間に実行してほしいことを書きます。

マクロ名は、任意のもので大丈夫です。
(一部使えないものもあります。)
ここでは、testという名前にします。

その準備をしましょう。

「Sub」と最初を大文字にしなくても大丈夫です。
Excelマクロではある程度は、自動で修正してくれます。
(GASはそれほど修正してくれません)
すべて小文字で、「sub test」(subとtestの間には半角スペースを入れる)と打ち、

EX-IT_08

Enterキーで改行すれば、このようにしかるべきところが大文字になるのです。
PC、IT、プログラミングは、どこまで人がやり、どこからをやってくれるかを見極めるのがポイントになります。
そしてAIやロボットも。

EX-IT_09

 

プログラム(Excelマクロ)を書く

実行してほしい操作は、「セルA1に100を入力する」というものにします。
こういう状態にするわけです。

EX-IT_12

「セルA1に100を入力する」をそれぞれのプログラミング言語に合わせて訳しなければいけません。
Excelマクロの場合は、
Range(”a1″).Value =100
です。
(セルA1はa1でもA1でもかまいません)

プログラムではこの訳が大事なのですが、丸暗記する必要はなく、今ならネットで検索すれば事足りますし、自分がすでにつくったプログラムを流用することもできます。

Range(”a1″).Value =100を打つ場合も、すべて小文字で打って大丈夫です。

 

 

 

 

 

 

 

 

Enterキーを押せば、しかるべきところが大文字に変わります。
この大文字に変わったことで、プログラミングが正しかったということにもなるのです。

Excelマクロの実行

ここまでできたら、プログラムを実行してみましょう。
実行はF5です。
(SubとEnd Subの間で押しましょう)

 

 

 

 

 

 

 

 

実行後、Excelに切り替えると、このようにセルA1に100が入っています。
これが最初の一歩です。
EX-IT_12

〇〇=△△のパターンで、
・シートのセルの値を別のシートのセルA25に入れる
・シート「データ」のセルの値を別のファイルのシート「請求書」セルA25に入れる
・これらの操作を100回繰り返す
なんてことができます。
プログラミングを書けば、あとは実行するだけです。

マクロファイルの保存

このファイルを保存するには通常の「Excelブック(xlsx)」ではなく、Excelマクロ有効ブック(Xlsm)」で保存します。

EX-IT_13

 

Googleスプレッドシート(GAS)のはじめ方の一歩

一方、GoogleスプレッドシートでのGASを解説していきます。

スクリプトエディタを開く

まず、Googleスプレッドシートを開き、Alt+Shit+T→E(AltとShiftとTを同時押しし、その後にEを押す)でスクリプトエディタを開きましょう。
※Googleスプレッドシートはこちらからアクセスできます。
https://www.google.com/intl/ja_jp/sheets/about/
Googleアカウントが必要です。

EX-IT_14

スクリプトエディタはこのような画面です。
Excelマクロで、
Sub マクロ名()

End Sub
というものに値する、
function myFunction() {
}
は、もう書かれています。
ここはGASが便利なところです。

この{と}の間に実行してほしいことを書いていきます。

funcitonとは関数、myFunctionは関数名で、任意のものです。
EX-IT_15
こういった{も1つとして欠けてはいけません。
そもそも何かを依頼するとはそういうことです。
人が人に依頼するときは曖昧すぎます。
小学生よりも、人に仕事を指示・依頼する経営者、幹部職にこそプログラミングが必要だと思うのです。

プログラムを書く

では、「セルA1に100を入力する」を書いてみましょう。
これがGAS(スクリプトエディタ)ではどう訳すべきかを知っていなければいけません。
ここでは、

SpreadsheetApp.getActiveSpreadsheet().getRange('A1').setValue('100');

 

と書きましょう。

EX-IT_25
SpreadsheetAppは、Googleスプレッドシート
getActiveSpreadsheet()は、アクティブな(今開いている)シート
getRange(‘A1’)はセルA1
setValue(‘100’)は100という値を入れる
という意味です。
最後の、「;」も必須でこれがないとプログラムは動きません。

GASの
SpreadsheetApp.getActiveSpreadsheet().getRange(‘A1’).setValue(‘100’);

Excelマクロの
Range(“A1”).Value =100
を比べると、Excelマクロが圧倒的にシンプルです。

ただ、Excelマクロでは、本来
Application.ActiveWorkbook.ActiveSheet.Range(“A1”).Value =100
と書きます。

SpreadsheetApp.getActiveSpreadsheet().getRange(‘A1’).setValue(‘100’);

Application.ActiveWorkbook.ActiveSheet.Range(“A1”).Value =100
だと似たようなものです。

Excelはブック(ファイル)→シート→セルという構成ですので、本来は、どのブックのどのシートのどのセルかを指定しなければいけません。
しかし、Excelマクロでは上位のものを省略できます。
Range(“A1”).Value =100
だと、アクティブなブックのアクティブなシートのセルA1を指すのです。
(これは、他のシートやブックを指定するときに間違えやすいところでもあります)

 

プログラム(スクリプト)を実行

では、プログラム(スクリプト)を実行します。
実行はCtrl+Rです。

EX-IT_25

実行すると、こういうエラーが出ます。

EX-IT_17

保存しておきましょう。
(先に保存しても大丈夫です。)

EX-IT_18

保存して実行すると、またまた警告が。
[許可を確認]をクリックしましょう。
新しいスクリプトを書くと毎回出ますがしかたありません。
Googleスプレッドシートはちょくちょく変更されるので、なくなる可能性もあるでしょうが。

EX-IT_19

次の画面では「このアプリは確認されていません」というエラーができます。
左下の[詳細]をクリックし、[〇〇(安全ではないページ)に移動]をクリックしましょう。

EX-IT_21

ここでGoogleアカウントを選択し、

InkedEX-IT_20_LI

[許可]をクリックしましょう。

InkedEX-IT_22_LI

これで、実行できます。
セルA1に無事100が入りました。
警告が出て落ち着かないかもしれませんが、ぜひ試してみていただければ。

EX-IT_26


【編集後記】
昨日は、大分の妻の実家から東京へ。
15時過ぎに戻ってきました。
このタイミングで戻ってくれば飛行機も普通の値段です。

【昨日の1日1新】
※詳細は→「1日1新」

大分 トキハ砂遊び場
ジャガビー ゆず明太子
大分空港ラウンジ

【昨日の娘日記】
大分空港に行く前に、百貨店の砂場コーナーへ
白い砂を喜んでいました。
ちょっと目に入ったりしましたが。
空港まではぐっすり。機内は大暴れでした。
歩きたがるのがネックです。

  • URLをコピーしました!