ここから本文です

さらば残業! 面倒くさいエクセル業務を楽にする「Excel VBA」とは

7/7(金) 8:10配信

@IT

 日々の仕事で発生するちょっとした面倒くさい業務。特定の操作を繰り返すだけなので、今のままでもいいけど、楽になったらいいなと思うこともあるのではないでしょうか。業務を自動化すると時間が空くため、他の業務に時間を充てたり、残業時間を減らしたりできるかもしれません。

Excelのリボンに開発タブ

 本連載では、業務を効率化する手段として「Microsoft Excel」(マイクロソフトエクセル)で使える「VBA」(Visual Basic for Applications)と「G Suite」の「GAS」(Google Apps Script)の使い方を説明し、よくある業務課題の解決策を紹介します。連載第1回はVBA、第2回はGASの説明とセットアップ方法を紹介します。第3回以降は、VBAとGASを使った業務効率化術を取り上げます。

●VBAとは何か

 「VBA」とは、Microsoft Excelや「Microsoft Word」「Microsoft Access」「Microsoft PowerPoint」などのソフトウェアを操作することができるプログラミング言語です。いずれも、業務でよく使われるソフトウェアではないでしょうか。VBAを使って、毎日のようにある定型業務を自動化することで、業務効率化を実現することができます。

 中でも、Excel対応のVBAつまり「Excel VBA」は人気があるため、使っている人も少なくないでしょう。

○VBAを使うことでどんなことができるのか

 VBAを使うと、以下のような操作ができます。

・ワークシートの操作
・ワークブックの操作
・オリジナル関数の作成
・フォームの操作
・印刷・PDF出力とその設定
・グラフの操作
・ピボットテーブルの操作
・CSVなどテキストファイルの入出力
・ファイルやフォルダの操作
・Accessとのデータのやりとり
・Internet Explorer(IE)の操作

 このようなExcelで行える操作は、Excel VBAでもできます。むしろそれ以上のことをExcel VBAは実現が可能です。VBAが使える条件を1つ挙げるとすれば、「手順化できる操作かどうか」ということです。

 とあるルールにのっとって数字を集計したり、資料や伝票を作成したりするような業務は、手順化されていることが多々あります。つまり、VBAによる自動化の恩恵に預かれる可能性が高いといえます。具体的には、次のような業務が挙げられます。

・Excelのデータ一覧から請求書ファイルをPDF形式で保存または印刷
・フォルダに格納されている複数の経費精算書ファイル(xlsx)から会計ソフトへ取り込むcsvファイルを生成
・IEを操作して特定のサイトから情報を収集し、Excelに蓄積
・CSVで取り込んだデータからグラフを作成し、PowerPointプレゼンテーションのひな型に貼り付ける

 他にも、毎月、毎週、毎日発生するルーティンワークや頻繁に発生する業務、複数人で行う業務など、手順化できるExcel業務はたくさんあるでしょう。

 ルーティンワークは大切なことですが、誰でもできる業務なので、その中からイノベーションや成長はなかなか生まれません。しかしVBAを使えば、ルーティンワークをPCに任せることができるので、空いた時間でVBAのスキルを磨いたり、クリエイティブな業務を行ったりすることができます。

●最初に学ぶプログラミングとしてのExcel VBA

 プログラミングは、習得のハードルが高いように思えるかもしれません。しかし、Excel VBAなら、プログラミング技術を持っていない人でも「学びやすい」と思えるはずです。それには理由があります。

○仕事を通して学べる

 業務でExcelを使っている企業は少なくないでしょう。そのためExcel VBAのスキルを持っていれば、すぐに仕事に生かすことができます。さらに仕事でExcel VBAを使えば、触る時間が自然に多くなるので早くプログラミングを習得できます。

 作ったプログラム(マクロ)の効果を直接感じることができるのはモチベーション維持にも一役買いますし、効率化して空いた時間をExcel VBAの学習に充てるといった成長のスパイラルに入ることも期待できます。

 このように「関わる習慣を築きやすい」ことが、最初にプログラミングを学ぶ対象としてExcel VBAをお勧めできる最大のポイントです。

○日本語の情報がたくさんある

 VBAは日本の企業でよく使われているので、入門者向けから上級者向けまで、参考書籍が数多くあります。そのため、自分のレベルや用途に合わせて書籍を選ぶことができます。またインターネットの情報も充実しています。

○開発環境が不要

 他のプログラミング言語は、開発ツールのインストールやセットアップが必要で、プログラミング初心者にはハードルが高いことも少なくありません。Excel VBAには、プログラムを開発・実行するための「VBE」(Visual Basic Editor)というアプリケーションが組み込まれています。Excelさえあれば、すぐにプログラミングを始めることができます。

●Excel VBAを始めるための準備

 Excel VBAはすぐにプログラミングができますが、幾つか事前に準備しておくべきことがあります。この準備により、効率的にプログラミングができるようになるので、以下の手順に沿って設定してみてください。今回は「Excel 2016」を使って説明します。

○開発タブをリボンに表示する

 初期設定のExcelでは、Excel VBAプログラミングに使用する「開発」タブが隠されているので、リボンに表示するように設定します。

 まずExcelのリボンから「ファイル」→「オプション」を選びます。

 「Excelのオプション」ウィンドウが開くので「リボンのユーザー設定」を選択し、右側の「メインタブ」内の「開発」にチェックを入れ「OK」をクリックします。

 これらを設定すると、Excelのリボンに「開発」タブが追加されます。

○VBEを起動する

 Excel VBAのプログラミングは、専用のアプリケーション「VBE」で行います。先ほど追加した「開発」タブから、「Visual Basic」を選択するとVBEが立ち上がります。

 なお、VBEの立ち上げは、ショートカットキー[Alt]+[F11]でも可能なので、マスターしておくと便利です。

○オプションの設定

 次に、オプションの設定です。デフォルトの状態から変更しておいた方が効率的に開発できるオススメの設定があります。

 VBEのメニューから「ツール」→「オプション」を選択します。

 「オプション」ウィンドウが開き、「編集」タブで下記2つの操作をして「OK」を選んでください。

・「自動構文チェック」をオフ
・「変数の宣言を強制する」をオン

 「自動構文チェック」は、構文エラーの際にポップアップを表示してくれる機能です。ポップアップ表示はなくても開発を進められるので、オフの方が効率良く開発できます。

 「変数の宣言を強制する」は、宣言しないと変数を使えないようにする設定です。変数は宣言した方が安全かつ確実にプログラミングを進められるので、チェックを入れておきます。

 なお、オプションウィンドウはアクセスキー[Alt]→[T]→[O]でも開くことができるので、覚えておくといいでしょう。

○標準モジュールを挿入して、コードウィンドウを開く

 プログラムは「モジュール」という領域に記述していきます。中でも、一般的には「標準モジュール」を使います。新規のExcelファイルには、標準モジュールは存在しないので、挿入しましょう。

 VBEのメニューから「挿入」→「標準モジュール」を選択します。

 左側の「プロジェクトウィンドウ」に「Module1」という名前で標準モジュールを追加できます。また、メインのエリアに「Option Explicit」とだけ記載された真っ白なウィンドウが登場します。

 これは「コードウィンドウ」といいます。標準モジュール「Module1」にプログラムの命令やステートメントなどを記した文字列(コード)を記述していくためにある領域です。

 なお、標準モジュールの挿入は頻繁に行う操作なので、アクセスキー[Alt]→[I]→[M]を使いこなせるようになると効率的に開発が進められます。

○イミディエイトウィンドウとは

 コードウィンドウの下側に「イミディエイト」というタイトルのウィンドウがあります。これは「イミディエイトウィンドウ」と呼ばれ、プログラムの実行状況を確認したり、コードを記述したりするためのものです。開発する際に頻繁に使います。

 それぞれのウィンドウを開いたり、ウィンドウ間を行き来したりするショートカットキーを覚えておくと便利です。

・コードウィンドウの表示・移動:[F7]
・イミディエイトウィンドウの表示・移動:[Ctrl]+[G]

●Excel VBAプログラムの実行と保存

 準備ができたので、実際にExcel VBAプログラムを記述して実行していきましょう。

○Subプロシージャを作成する

 コードウィンドウに下記のコードを、キーボードで入力してみましょう。
――――――
sub Hello
msgbox "Hello"
――――――

 「sub Hello」とだけキーボードで入力して[Enter]キーを押して確定させると、自動でかっこ記号や「End Sub」の文字が追加されたり、「msgbox」と全て小文字でキーボード入力して確定させると、「MsgBox」というように自動で文字が大文字になったりします。結果として下記のコードになるはずです(キーボードで入力せず、コピー&ペーストで入力した場合、「End Sub」は自動で追加されません)。
――――――
Sub Hello()
MsgBox "Hello"
End Sub
――――――

 VBEでは、このようにユーザーのキーボード入力を補助する機能が多数搭載されているので、使いこなすとプログラムの記述を効率良く進めることができます。

 VBAではプログラムのひと塊を「プロシージャ」という単位で記述していきます。プロシージャには幾つかの種類があります。今回は「Subプロシージャ」というプロシージャを使っており、その名前が「Hello」ということになります。

 そのSubプロシージャの処理は「Sub Hello()」から始まり、「End Sub」で終わります。

○Subプロシージャを実行する

 では、今回入力したSubプロシージャを実行してみましょう。実行したいプロシージャ内にカーソルがある状態でツールバーの「実行」アイコンを押すか、ショートカットキー[F5]を押すことで実行できます。

 実行すると「MsgBox "Hello"」という処理が行われ、「Hello」と書かれたメッセージボックスが表示されます。

○Excel VBAプログラムの保存

 記述したコードを残しておくためには「保存」をする必要があります。

 VBEのメニューの「ファイル」→「……の上書き保存」で保存できますが、ショートカットキー[Ctrl]+[S]を使う方が素早くて効率的でしょう。

 初回保存時には、「名前を付けて保存」ウィンドウが開きます。ここの注意点は「ファイルの種類」です。一般的なExcelファイルを保存すると「.xlsx」という拡張子のファイルになりますが、VBAプログラム(マクロ)を含む場合は「.xlsm」という拡張子になります。そのためプルダウンで「Excelマクロ有効ブック(.xlsm)」を選択してから「保存」しなければ、Excel VBAのプログラムが保存されません。

●次回はGoogle Apps Scriptを紹介

 今回はExcel VBAとは何か、そしてどのように使うのかを解説してきました。これでExcel VBAを活用するスタートラインに立つことができたと思います。日々、少しずつでも学習と活用を繰り返すことで、皆さんの「働く価値」が次第に高まっていくことでしょう。

 今回出てきたショートカットキー/アクセスキーをまとめておきます。これらは、ぜひ覚えておいてください。

□□□
●ショートカットキー/アクセスキーまとめ
・VBEの立ち上げ:[Alt]+[F11]
・オプションウィンドウの表示:[Alt]→[T]→[O]
・標準モジュールの挿入:[Alt]→[I]→[M]
・コードウィンドウの表示・移動:[F7]
・イミディエイトウィンドウの表示・移動:[Ctrl]+[G]
・プロシージャの実行:[F5]
・Excel VBAプログラムの保存:[Ctrl]+[S]
□□□

 さて、次回はExcel VBAと並んで業務の強い味方となる「Google Apps Script」について、その概要と使い方を解説していきます。どうぞお楽しみに。

●著者プロフィール

○高橋宣成
プランノーツ 代表取締役
「ITを活用して日本の『働く』の価値を高める」をテーマに、ExcelやVBA、G Suite、Google Apps Script、クラウドなどによる企業または個人事業主向けのシステムおよびツールの開発やコンサルティング、セミナー講師などを務める。「IT×働き方」をテーマに運営するブログ「いつも隣にITのお仕事」は、開設2年弱で月間40万PV達成。

○書籍紹介
ExcelVBAを実務で使い倒す技術
高橋宣成著 秀和システム 1944円(税別)
動くコードが書けたその先、つまり「ExcelVBAを実務で使う」という目的に特化した実践書。ExcelVBAを楽に効果的に使いこなし続けるための知恵と知識、そしてそのためのビジョンと踏み出す勇気を提供する1冊。

最終更新:7/7(金) 8:10
@IT