プログラミング初心者を対象にExcelマクロ/VBAを使った業務自動化プログラムの作り方を一から解説します。初回は、そもそもプログラミングとは何か、Visual BasicとVBAとマクロの違い、マクロの作り方、保存/削除、セキュリティ設定などについて【Windows 10、Excel 2016に対応】。
今回から数回にわたって「Excelマクロ/VBAで始める業務自動化プログラミング入門」を書くことになった。正直言って、ExcelのマクロやVBA(Visual Basic for Applications)は数十年前にちょっと触っただけで、全くの初心者といっても過言ではない(2014年当時)。本連載はプログラミングの初心者を対象にしているので、筆者も勉強しながら「読者の皆さまと一緒にExcelマクロ/VBAについて学んでいければ」と思っている。
なお、本連載を執筆するときに使った筆者のソフトウェア環境は、OSが「Microsoft Windows 10 Professional」(64ビット)で、Excelは「Microsoft Excel 2016」だ。この連載では原則として「Excel」というとMicrosoft Excel 2016の使用を前提としているが、お手元のExcelでもできることに大きな違いはないはずだ。
本連載は、2014年にWindows 8.1とExcel 2013で解説していたものを、Windows 10とExcel 2016用に改訂している。Excel 2013とExcel 2016の主な違いとしては下記が挙げられる。
その他、本連載では取り上げていないが、「ピボットテーブル」での変更点が若干あるようだ。また、「グラフ」の種類も増えているので、「グラフ」を扱う回で解説する。VBAの構文自体に変更はない。
まず、プログラミングとは一体何なのか、そしてプログラムが作れると何がうれしいのかについて、筆者の私見を書いてみたいと思う。
一般的にいわれているように、プログラミングとは、「人間が意図した命令を、何らかのプログラミング言語を用いて、コンピュータ上で動作させる行為である」ということだ。命令の記述(プログラム)は、文字列を使って書く(コーディングという)だけではなく、最近では、「Scratch」などグラフィカルに定義するツールもある。
筆者はExcelのVBAプログラミングはほとんど初心者に近いが(2014年当時)、Microsoft Visual Studio(以下、VS)を使ったプログラム経験は結構長い。使用プログラミング言語は主に「Visual Basic(VB.NET)」である。長年プログラムを書いてきて思うのだが、プログラミングの面白さは、自分の書いたプログラム(命令)が自分の意図通りに動いたときの、あの感動である。
筆者が、生まれて初めて書いたプログラムは大昔のMS-DOS※1時代の「QuickBASIC※2」を使ったものであるが、数行のプログラムが動いたときの感動は今でも忘れられない。そして、結局その感動が忘れられないまま、現在もプログラマーとして生きている。
※1MS-DOSとはMicrosoft Disk Operating Systemの略でマイクロソフトのOSを指す
※2QuickBASICとは、MS-DOS上で動作する、マイクロソフトの開発したプログラミングの開発環境
ちょっと話が脇にそれてしまった。元に戻そう。これから初めてプログラムを経験する読者に言っておきたいのは、初めて書いたプログラムが動いたときの感動は一生忘れられないものだということだ。自分の人生さえも左右してしまうものである。ExcelのVBAにしてもしかりだ。
VSには無償版も用意されている。環境構築のためにインストール作業を行う必要がある。このインストールが結構時間がかかって、筆者には苦痛だ。
その点、ExcelやWord、AccessなどMicrosoft Officeは、現在ほとんどのWindows PCやタブレットにプリインストールされており、インストールの手間もない。PCやタブレットを購入すれば、すぐに「VBE(Visual Basic Editor)」という開発環境が利用できるようになっている。何とも、至れり尽くせりではないか。VSのように自分でインストールして環境を構築する必要もない。
「VBEはプログラミング初心者にうってつけのプログラム開発環境だ」と筆者は思っている。
また、VSで開発するプログラムは、仕事で使うアプリケーションを作成する場合もあるだろうし、趣味でゲームなどを作る場合もあるだろう。しかし、Excel VBAで行うプログラミングは、原則として仕事で使う、作業の効率化を図る目的で作成される場合が多い。Excel自体が仕事で使うものなので、当たり前といえば当たり前だが(例外としてVBAを駆使して「インベーダー」「テトリス」などゲームを作る強者もいる)。
データの追加や、数値の複雑な計算など、これらをVBAで自動化しておけば、手動で行うより、はるかに短時間で処理でき、いつも残業などで処理していた作業が、勤務時間内で処理でき、仕事に余裕ができ、定時で退社して自分の時間を謳歌する、といったことも十分に可能だ。
ぜひ、今回の連載でVBAをマスターして、業務の効率化を図り、ゆとりある人生を送ってみてはいかがだろうか。
前置きが長くなってしまった。本題に入ろう。
最初は、「マクロ作成の基本」からだ。とにかくマクロ作成の基本を知らなければ、何事も始まらない。ここからは、「マクロ」を使用できるようになるまでの手順をメインに解説する。
「マクロ」とは、Excelなどのアプリケーション上で行う動作の手順がまとまったものだ。動作の手順はプログラミングすることもできれば、[マクロの記録]機能で記録することもできる。例えば図1のような社員データがあり、それを別な場所にコピーする場合は、通常は範囲を選択して、コピー&ペーストで別なセルに貼り付ける処理を行う。
この図のように少ないデータなら問題ないが、何万件もあるデータをいちいち選択しては貼り付けを行っていたのでは、作業効率が悪い。そこで登場するのがマクロだ。
Excelで行うプログラミング用の言語はVBA(Visual Basic for Applications)と呼ばれ、「Visual Basic」を含んでいる。この違いは何だろうか。
Visual Basic(VB.NET)と異なる点は、VBAはExcelやWord、Access上で実行できるプログラミング言語で、ExcelやWord、Accessの機能を思う存分使えるようにVisual Basicをベースに改良した点だ。Visual Basic(VB.NET)を使って、VBAと同じことをしようと思うなら、膨大な行数のプログラムを書かねばならないだろう。
またマクロは、あくまでもアプリケーション上で行う動作の手順がまとまったものであり、「マクロの記録」機能だけでも作ることができる。ただ、その記録がVBAというプログラミング言語で記述され、保存できるのだ。[マクロの記録]機能だけで自動化したい動作の手順をプログラムとして記録し、そのプログラムに書かれているVBAの記述を書き換えることで、機能を追加したり、さらなる作業の省略も可能となる。もちろん[マクロの記録]機能に頼らず、一からVBAのプログラミングでマクロを作ることも可能だ。
マクロを記録するには[開発]タブをクリックすることから全てが始まる。しかし、デフォルトではこの[開発]タブはExcelのメニューには表示されていない。では、どうすれば[開発]タブが表示されるかを解説しよう。
マクロの作成や編集の際は、[開発]タブにあるアイコンをクリックする。[開発]タブには、「マクロのセキュリティ」「マクロの一覧」「マクロの編集画面を開く」アイコンが登録されている。しかし、インストールされているExcelをそのまま使っていても[開発]タブは表示されていない。ここからは、[開発]タブの表示方法について解説しよう。
まず、Excelメニューの[ファイル]→[オプション]と選択する(図2)。
次に、表示される[Excelのオプション]から[リボンのユーザー設定]を選択する。[メインタブ]内の[開発]にチェックを付け、[OK]をクリックする(図3)。
すると、Excelのメニューに[開発]タブが追加される(図4)。
世の中には、マクロ機能を悪用した「マクロウイルス」というものが存在する。その感染を防ぐために、Excelにはいろいろなセキュリティ機能が用意されている。セキュリティの設定次第では、マクロが実行できない場合もあるので、注意してほしい。
マクロを含んだExcelファイル開くと「セキュリティの警告」メッセージバーが表示される(図5)。
図5の画面から[コンテンツの有効化]ボタンをクリックすると、マクロが有効になってメッセージバーが消える(図6)。
マクロを含むExcelファイルを開いたとき、どのような状態でファイルを開くかは、「マクロの設定」によって変更できる。
まず、[開発]タブの[マクロのセキュリティ]をクリックする。すると[セキュリティセンター]が開く。[マクロの設定]をクリックし、「警告を表示して全てのマクロを無効にする」にチェックを入れて、[OK]ボタンをクリックする(図7)。
この設定にしておくと、マクロを含むブック(Excelファイル)を開いたときにマクロが無効になるが、安全性が保障されているマクロなら、図5から図6の方法で有効にすればいいだろう。
ここからは、実際にマクロを作成してみる。図1で、手動で行った手順を、マクロとして記録してみよう。初めて自分でマクロを作る場合は、VBAでプログラミングするよりも、Excelで行った操作がマクロとして記録される[マクロの記録]を使うといいだろう。
まず、[開発]タブをクリックし、[マクロの記録]をクリック。[マクロの記録]画面で、[マクロ名]に「コピーと貼り付け」と指定する。[マクロの保存先]はデフォルトのまま。[説明]には「選択した範囲を他の場所にコピーして貼り付け」と指定する。最後に[OK]ボタンクリックする(図8)
次に、図1で行った手順を行う。社員のデータを選択してコピーし、貼り付ける場所でペーストする。[マクロの記録]が「記録終了」に変わっているので、「記録終了」をクリックする(図9)。これで、コピー&ペーストの一連の流れがマクロとして記録される。
それでは、今作ったマクロの中身を見てみよう。[開発]タブのマクロをクリックすると、記録した「マクロの」一覧が表示される(図10)。
図10の画面で[編集]をクリックすると、VBEが起動してマクロの内容(プログラミング言語の記述)を表示できる(図11)。
VBEを直接起動する場合は、Excelの[開発]タブ内の[Visual Basic]をクリックする。VBEを終了する場合は、右隅上の[×]をクリックする。Excelの画面に戻る場合は、VBEのメニューにあるExcelのアイコンをクリックする(図12)。コードの意味などについては別の回で詳細に解説する予定だ。
ここからは、実際にマクロを実行してみよう。
[開発]タブにあるマクロをクリックする。マクロのダイアログボックスが表示されるので、実行したいマクロ、この場合は「コピーと貼り付け」を選択して[実行]ボタンをクリックする(図13)。
すると、図14のようにマクロが実行されてデータがコピー&ペーストされる(図14)。
頻繁にマクロを利用する場合には、わざわざ「マクロの一覧」から実行するのは面倒だ。より素早くマクロを実行するためには、「クイックアクセスツールバー」「ショートカットキー」「ワークシート(セルがある作業領域)上にマクロ実行用のボタン」を作成する方法がある。
今回は、「クイックアクセスツールバーにマクロを追加する」方法と、「ワークシート上のボタンからマクロを実行する」方法の2つを紹介しよう。
Excelメニューの[ファイル]→[オプション]と選択し、[クイックアクセスツールバー]を選択する。[コマンドの選択]に[マクロ]を指定する。次に、[クイックアクセスツールバーのユーザー設定]に[データ.xslxに適用]を指定する。「データ.xslx」は図1のデータを保存しておいたときのExcelのファイル名だ。(図15)。
図15の画面から<区切り>内にある「コピーと貼り付け」を選択して[追加]ボタンをクリックする。選択したマクロが右側の欄内に表示される。[OK]をクリックする(図16)。
すると、Excelのメニューに「コピーと貼り付け」というアイコンが表示される(図17)。
このアイコンをクリックすると「コピーと貼り付け」のマクロがすぐに実行される(※このアイコンの種類は変更が可能だが、直接マクロとは関係がないので今回は省略する)。
このアイコンを削除したい場合は、このアイコンを選択して、マウスの右クリックで表示されるメニューから、[クイックアクセスツールバーから削除]を選択すると削除できる(図18)。
次に、ボタンからマクロを実行させてみよう。
ワークシート上に配置した図形をボタンにし、マクロの実行を割り当てることができる。ボタンの表面に、このボタンは何のマクロを実行するボタンなのかを記述しておくと、大変分かりやすくて便利だ。
まず「挿入」タブから「図形」の[▼]をクリックする。ここでは例として「角丸四角形」を選択する(図19)。
ボタンを配置したい場所にドラッグする。ボタンの表面に文字を入力する(図20)。
次に、ボタンを右クリックして表示されるメニューから、[マクロの登録]を選択する(図21)。
表示される「マクロの登録」画面から、「コピーと貼り付け」を選択して[OK]ボタンをタップする(図22)。これで、ボタンとマクロが関連付けられた。
では、ボタンをクリックしてマクロを実行してみよう。まず一度、ボタン以外のセルをクリックする。それからボタンをクリックすると、先の図14のように社員のデータがコピー&ペーストされる。
さらに、ここでコピー&ペーストしたデータの「削除マクロ」も追加してみよう。
[開発]タブから[マクロの記録]をクリック、「マクロ名」は「削除」としておく。「説明」には「コピーペーストしたデータの削除」としておく。最後に[OK]ボタンをクリックする。
マクロの記録が開始されるので、コピー&ペーストした個所を選択して、キーボードの[Delete]キーで削除する。「記録終了」をクリックする。「挿入」メニューから「図形」を選択して「角丸四角形」を配置する。表面の文字には「削除」と付けておく。[削除]ボタンを選択してマウスの右クリックで、「マクロの登録」から「削除」を選択して[OK]をクリックする。
以上の手順で、社員データのコピー&ペーストと削除が可能になる。[コピーとペースト]ボタンをクリックすると図23のようになり、[削除]ボタンをクリックすると図24のようになる。
せっかく作成したマクロを含むExcelファイルは保存しておきたいものだ。そこで、次にマクロを含んだブック(Excelファイル)の保存について見ていこう。
Excel 2007以降では、マクロを含んだブックは、通常のExcelファイルとは異なる「マクロ有効ブック」として保存するようになった。
Excelメニューの[ファイル]→[エクスポート]と選択する。「ファイル種類の変更」をダブルクリックする。「名前を付けて保存」の画面が表示されるので、[ファイルの種類]に「Excelマクロ有効ブック(*.xlsm)」を選択して、ファイル名を指定する(図25)。マクロを含んだファイルの拡張子は「.xlsm」となる。
では、不要になったマクロはどうするか? 当然削除することになるので、連載初回の最後はマクロの削除方法について見ていこう。
まず、[開発]タブ内のマクロをクリックする。マクロの画面が表示されるので、削除したいマクロを選択して[削除]ボタンをクリックする(図26)。
VBEからでもマクロを削除できる。削除したいマクロの記述部分を選択し、キーボードの[Delete]キーを押す。これでVBEからマクロが削除できる(図27)。
今回はここまでだ。簡単なマクロを登録して、マクロを実行するところまでを解説したが、まだ1回目で内容も容易であるため、十分に理解できたのではないだろうか。この回では、マクロとは何であって、どのように使用すればいいかがを理解できれば十分だ。
次回は、Excel VBAの基礎知識について解説する。プログラミング用語も出てくるので、分かりやすく解説したいと思う。お楽しみに。
【2016/6/27】Windows 10、Excel 2016に対応しました。
PROJECT KySS 薬師寺 国安(やくしじ くにやす)
1950年生まれ。フリーVBプログラマ。高級婦人服メーカーの事務職に在職中、趣味でVBやActiveXに取り組み、記事を執筆。2003年よりフリー。.NETやRIAに関する執筆多数。Windowsストアアプリも多数公開中(約270本)。
Microsoft MVP for Development Platforms - Client App Dev (Oct 2003-Sep 2012)。
Microsoft MVP for Development Platforms - Windows Phone Development(Oct 2012-Sep 2013)。
Microsoft MVP for Development Platforms - Client Development(Oct 2013-Sep 2014)。
PROJECT KySSは、1997年に薬師寺聖と結成したコラボレーション・ユニット
Copyright © ITmedia, Inc. All Rights Reserved.
HTML5�偽X 險倅コ九Λ繝ウ繧ュ繝ウ繧ー