Excel VBA、Google Apps ScriptどっちでもOK!――データ、書類、メールのめんどくさい業務を明日から自動化するための総まとめ:働く価値を上げる“VBA/GAS術”(終)
日頃発生する“面倒くさい業務”。簡単なプログラミングで効率化できる可能性がある。本連載では、業務を効率化する手段としてVBAとGASの使い方を説明し、よくある業務課題の解決策を紹介する。
本連載について
業務で発生するちょっとした面倒くさい業務。特定の操作を繰り返すだけなので、今のままでもいいけど、楽になったらいいなと思うこともあるのではないでしょうか。例えば業務を自動化すると時間が空くため、他の業務に時間を充てたり、残業時間を減らしたりできるかもしれません。
本連載「働く価値を上げる“VBA/GAS術”」では、業務を効率化する手段として「Microsoft Excel」(マイクロソフトエクセル)で使える「VBA」(Visual Basic for Applications)と「G Suite」の「GAS」(Google Apps Script)の使い方を説明し、よくある業務課題の解決策を紹介します。
これまで14回にわたり、オフィスワークで活用できる幾つかのツールとその作り方を紹介しながら、VBAとGASについて解説してきました。最終回の今回は、そのまとめとして、これまでの連載を振り返りながら、VBAとGASについて、おさらいしていきます。
Excel VBAとは、Google Apps Scriptとは
連載第1、2回では「Excel VBA」と「Google Apps Script」の概要と、その特徴について、またその開発環境についてお伝えしました。
- 第1回:『さらば残業! 面倒くさいエクセル業務を楽にする「Excel VBA」とは』
- 第2回:『プログラム自動実行で仕事を楽に! APIでSlackなどと連携できる「Google Apps Script」とは』
「VBA」はMicrosoft ExcelをはじめとしたMicrosoft Officeのソフトウェアを操作することに長けたプログラミング言語です。一方で、「Google Apps Script(GAS)」は、GoogleスプレッドシートをはじめとしたG Suiteアプリケーションを操作するのが得意なプログラミング言語です。
これら2つのプログラミング言語には下記の共通点があり、いずれもプログラミング職ではないオフィスワーカーが最初に学ぶプログラミング言語として適しています。
- ルーティン業務の効率化、自動化を実現できる
- 開発環境の構築が不要
一方で、相違点もあります。前述の通り、操作対象の中心となるアプリケーションが異なります。また、プログラミング言語自体も異なり、VBAであればVisual Basicが、GASであればJavaScriptがベースになっています。それぞれのプログラミング言語が使われている環境に近い職業にいる方には学習コストが低くなります。
もう一つの大きな相違点は、VBAはローカルPCで、GASはGoogleのクラウド上で動作することです。この点は、開発の進め方や実現できることに大きく関係します。
例えば、GASはクラウド上で開発、動作するので、共同開発が行いやすい、時限式のイベントトリガーにより、時間に応じてスクリプトを実行させることなどが可能です。しかし、Googleのクラウドを使うため、実行時間や実行の回数など、細やかな制約が設けられており、その範囲内に収まるように開発する必要があります。VBAはローカルPCで動作するので、そのような制約はありませんが、共同開発のしやすさではGASに優位点があります。
「どちらを選択するか」ということであれば職場のオフィススイートに依存することが多いでしょう。Microsoft Officeが中心であればVBAを、G Suiteを中心に使用しているのであれば、Google Apps Scriptを使用するのが自然の流れです。ただ、昨今では両方のオフィススイートを両方とも導入する企業も増えてきており、適材適所でハイブリッドに活用するチームも増えてきています。
データのチェックを行う
連載第3、4回では、「シート上のデータのチェック」を題材に、VBAとGASで簡単なツールの作り方を解説しました。セルに入力されているデータのデータ型の揺らぎは、関数、ピボットテーブル、グラフ、そしてプログラミングなど、コンピュータの力を存分に借りながら業務を進める上で、障害になりやすいものです。それは、ExcelでもGoogleスプレッドシートでも同様です。
- 第3回:『Excelデータの入力不備で計算エラーが発生して家に帰れない!――入力規則よりも簡単なチェックマクロとは』
- 第4回:『「計算式エラーで残業確定……」、GASで入力データのチェックツールを作成』
このツールのプログラムは、VBAもGASもともに、変数の宣言、セルの値の参照、条件分岐、反復といった基本要素が含まれており、最初にトライするツールとして適しています。以下の表に、VBAとGASのこれらの構文の比較をまとめているので、参考にしてください。
項目 | VBA | GAS |
---|---|---|
変数の宣言 | Dim 変数名 As 型 | var 変数名 |
セルの値を参照 | Rangeオブジェクト.Value | Rangeオブジェクト.getValue() |
条件分岐 | If 条件式 Then 処理 | if(条件式){ //trueの場合に行う処理 } |
反復 | For 変数 = 初期値 To 最終値 '処理 Next 変数 |
for (初期化式; 条件式; 増減式) { //処理 } |
データから書類を自動作成する
連載第5、6回では「データ一覧から書類を作成する」ツールをVBAとGASで作成しました。書類を作成するルーティン業務は、多くの職場で発生しています。VBAやGASを学ぼうと決める契機に、このツールの作成を目標にされている方も多いでしょう。
これらのツールを作成するポイントが2つあります。
1つ目のポイントは、ひな型用のブック(またはスプレッドシート)を事前に用意しておくことです。プログラムとしては、ひな型をコピーしながら取引先ごとの書類を作成する流れとしています。というのも、プログラムは見栄えを良くしたり、体裁を整えたりするのは苦手だからです。先に、人の目と手でそれを作成しておく方が見栄えの良い書類を作れます。
2つ目のポイントは、Excelまたはスプレッドシートのオブジェクトの階層構造を把握することです。セルの操作だけではなく、シートや、ブックまたはスプレッドシートの操作が必要になるので、それぞれのオブジェクトとその関係性を理解する必要があります。VBAでもGASでも、以下の表に示す階層を形作っており、上位から下位のオブジェクトを取得して操作する流れが基本です。
オブジェクト | VBA | GAS |
---|---|---|
アプリケーション | Applicationオブジェクト | SpreadsheetAppオブジェクト |
ブック、スプレッドシート | Workbookオブジェクト | Spreadsheetオブジェクト |
シート | Worksheetオブジェクト | Sheetオブジェクト |
セル | Rangeオブジェクト | Rangeオブジェクト |
書類からデータを収集する
連載第7、8回では、「書類からデータを収集する」ツールを作成しました。
これらのツールを作成するためには、「フォルダの中のファイルを操作する」という操作が必要になります。VBAでは、PCの任意のフォルダに存在する個々のファイルを開くという処理を、「FileSystemObject」を使って実現することができます。ライブラリ「Microsoft Scripting Runtime」の参照設定が必要になりますが、フォルダやファイルをオブジェクトとして容易に操作できるようになるのでお勧めです。
一方で、GASであれば、Googleドライブを操作できる「Driveサービス」を使って、ドライブ上のフォルダやファイルを操作できます。
このように、ExcelとFileSystemObjectを、またはGoogleスプレッドシートとGoogleドライブを連携させることで、実現できることがぐっと広がります。
処理を高速化する
連載第9、10回は、それぞれ第7、8回のツールをベースに、より処理を高速に、かつメンテナンス性を高めるテクニックを紹介しました。
プログラムは目的の動作をすれば、それがベストかというとそうではありません。ツールを運用する上で不具合が起きにくかったり、業務や状況の変化に対応しやすかったりするための工夫はたくさん考えられますし、当然実行時間は短いに越したことはありません。
その工夫の一部として、VBAではテーブル、列挙型を使うテクニックを紹介しました。テーブルを使うことで、表をまとまりとして操作しやすくなり、そのサイズ変更にも強くなります。列挙型を使って列番号をグループ管理することで、可読性とメンテナンス性を上げることができます。
また高速化のテクニックでは、VBA、GASともに「配列」を紹介しました。ExcelもGoogleスプレッドシートも、それらのアプリケーションへのアクセスの回数は少なければ少ないほど処理速度が向上します。ですから、実行速度の観点では、データをまとめて配列に取り込み、配列の中で処理を行うことが望ましいのです。特に、GASでは実行時間の制限がシビアなので、配列を駆使する技術は必須といってもよいでしょう。
メール送信の自動化をする
連載第11、12回では、「メール」をテーマに日報メールの下書きを作成するツールを紹介しました。表計算だけではなく、メールもルーティンとして多くの業務時間を費やしていることが少なくありません。しかし、VBAやGASはメール関連の業務の自動化にも活用をすることができます。
VBAによるメールの下書きの作成は、Microsoft Outlookの操作により実現できます。「Outlookライブラリ」の参照設定が必要ですが、それによりExcelとOutlookを連携させたさまざまなツールを開発できるようになります。OutlookライブラリのMailItemオブジェクトとそのメンバーを使用することで、簡単にメールの作成、送信先や件名の設定などを実現できます。
GASでは、「Gmailサービス」を使うことで、メッセージの送信や下書きの作成を簡単に行えます。時限式のトリガーを使えば、毎日決まった時間帯に下書きを作成しておくことも可能です。
イベントに応じて動作させる
連載第13、14回では、ToDo完了時のメール送信を自動で行うツールを題材に、イベントに応答して処理を実行する方法をお伝えしました。
VBAでもGASでも、セルの値の変更をきっかけとしてプログラムを動かすことが可能です。VBAではイベントプロシージャという形でその機能が提供されています。セルの値の変更以外にも、多種多様なイベントプロシージャを使用できるのが特徴です。
一方でGASでは、トリガーという仕組みを利用することができます。最大の特徴は、何といってもクラウドで動作するという点です。そのため、実行者がPCを開いていなくとも、決まった時間に動作をさせたり、他のユーザーの操作をきっかけに動作をさせたりすることができます。
働く時間の価値を継続的に高めるために
本連載では、オフィスワーカー向けにVBAまたはGASで生産性を上げるための幾つかのツールと、その作り方について解説してきましたが、いかがでしょうか。連載で紹介してきたものは、実現可能なうちのごく一部であり、アイデア次第ではそれこそ無限といってもいいほどの可能性があります。ぜひ、皆さん自身で、独自のアイデアを膨らませて、それを実現すべくトライしてみてください。そして、それを通してスキルを磨き続けてください。
その習慣を続けることで、皆さんの働く時間の価値も継続的に高まっていくことにつながります。
著者プロフィール
高橋宣成
プランノーツ 代表取締役
「ITを活用して日本の『働く』の価値を高める」をテーマに、ExcelやVBA、G Suite、Google Apps Script、クラウドなどによる企業または個人事業主向けのシステムおよびツールの開発やコンサルティング、セミナー講師などを務める。「IT×働き方」をテーマに運営するブログ「いつも隣にITのお仕事」は月間60万PV達成。
書籍紹介
高橋宣成著 秀和システム 1800円(税別)
動くコードが書けたその先、つまり「ExcelVBAを実務で使う」という目的に特化した実践書。ExcelVBAを楽に効果的に使いこなし続けるための知恵と知識、そしてそのためのビジョンと踏み出す勇気を提供する1冊。
詳解! Google Apps Script完全入門 〜Google Apps & G Suiteの最新プログラミングガイド〜
高橋宣成著 秀和システム 2600円(税別)
Google Apps Scriptの完全入門書として、JavaScriptの基本から自作ライブラリまでを徹底解説。これ一冊だけで基礎から実践まで体系的にマスターできます。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 中級レベルの「Excel VBA開発者」になるために必要な考え方
Excel VBAを使って業務効率化を実現。しかし、自分で書いたコードをメンテナンスするとき、コードの解読に時間がかかってしまったり、エラーが解消できなかったりといった苦い経験はないだろうか。どうすれば将来も楽になるコーディングができるのだろうか。 - Excel VBAプログラマーもGoogle Apps Scriptの基本が学べる無料の電子書籍
人気過去連載を電子書籍化して無料ダウンロード提供する@IT eBookシリーズ。第34弾では「Excel VBAプログラマーのためのGoogle Apps Script入門」10回分を1冊のPDFとしてまとめた。 - 【改訂版】プログラミング初心者がExcelマクロ/VBAを始めるための入門電子書籍全273ページを無料で提供
人気過去連載を一冊に再編集して無料ダウンロード提供する@IT eBookシリーズ。Vol.3は、プログラミング初心者でも始められる、『Excelマクロ/VBAで始める業務自動化プログラミング入門』だ【Windows 10、Excel 2016に対応】。