マクロとVBAについて
<< ExcelのVBA入門 :前の記事
こちらでは、エクセルVBAを学ぶ前にマクロやVBAについて基礎的な部分を中心にまとめています。よく耳にするマクロやVBAといったキーワードが何を意味するのかVBAとマクロの関係、マクロの使い方などをよく理解した上で学習していきましょう。
目次
マクロとは
マクロとは、ユーザーがExcel上で行った複数の操作を記録して、1つにまとめたものになります。記録したマクロは必要な時に自由に呼び出して実行することができる便利な機能です。
特に、毎日あるいは定期的に行う同じ作業を一連の操作としてマクロに記録しておけば、いつでも同じ処理を自動で行ってくれるので作業が大幅に効率化されます。他にもデータの並び替えや必要データのみの集計など手間と時間がかかる作業をマクロに記録して自動化させることも可能です。尚、そのように記録されたマクロはVBAのプログラミング言語で記述されていきます。
マクロの記録方法については、「自動記録」と「直接入力」の2つの方法があります。「自動記録」は、ExcelのVBAの知識があまりない方でも簡単に利用できますが、複雑な操作を行う場合は記録されたマクロをカスタマイズする必要があります。
例えば、以下のマクロは実際に自動記録で記録されたマクロになります。
Sub Macro1()
'
' Macro1 Macro
' マクロ記録日 : 2014/12/11 ユーザー名 : xxx
'
'
Range("A1").Select
ActiveCell.FormulaR1C1 = "マクロを記録する"
Range("A2").Select
End Sub
記録したマクロを簡単に説明すると以下のような処理になります。
- ①セルA1を選択
- ②選択したセルに「マクロを記録する」を代入
- ③セルA2を選択
このように1つ1つの操作が記録されますので、自動化させたい場合は一旦マクロを「記録」から自動作成し、その後に自由にカスタマイズしていくと効率よくプログラミングができます。
VBAとは
先ほど、VBAはマクロを記述するためのプログラミング言語と記述しましたが、詳しく説明するとVBAはVisual Basic for Applicationsの略で、ExcelやAccessなどのMicrosoftOffice系アプリケーションに特化したマクロ言語です。
元々はVB(VisualBasic)という開発言語を基に作られた言語で、操作や処理を自動化するためのプログラムを作成するために利用されます。
このような特定のプログラミング言語を基に一部の機能を簡素化するなどして開発された言語はサブセットとも呼ばれます。ちなみにVB(VisualBasic)は、その後VB.NETという開発言語に進化し、Microsoftのプログラム群であるVisualStudio.NETにも含まれています。
また、VBAは記述したプログラムをテキスト形式で保存し、プログラム実行時にインタプリタ(機械語への翻訳プログラム)を利用して機械語に変換することでプログラムを実行します。このようなプログラミング言語をインタプリタ型言語と呼びます。
特徴として、作成したプログラムを機械語に翻訳する必要がないのでプログラムを手軽に実行することができます。他にもインタプリタ型言語にはJavaScriptやVBScript、Perl、PHP、Rubyなどがあります。
マクロとVBAは混同されがちですが、マクロは一連の操作を実行する機能の総称で、VBAはマクロを記録するためのプログラミング言語として理解するようにしましょう。
VBAとVBの違いについて
VBAは、VB(VisualBasic)という開発言語を基に作られた言語と解説しましたが、VBとVBAの違いがいまいち分からないという方もいらっしゃいます。簡単に違いを説明するとVBはWindwosのパソコンに対して直接命令するのに対して、VBAはWindowsに搭載しているOffice製品に対して命令するプログラミング言語になります。
ですので、VBAプログラムに対応したOffice製品がインストールされていない環境では動作しません。VBAはVBを基に開発された言語ですので基本的な文法は同じですが、もしVBかVBAのどちらかを勉強しようか悩まれている場合は、VBAをオススメします。VBはVBAと違って最初に勉強するには少し難しいので、VBAを理解してから挑戦するようにしましょう。
VBAでできること
VBAはOffice製品で動くプログラミング言語ですが、ExcelやAccessのようはOffice製品はVBAを利用しなくても様々な用途に活用できるアプリケーションです。もちろん、製品の機能だけでも十分なアプリケーションですが、業務で日々利用していると基本的な機能だけではこなすことが出来ないことが多々あります。VBAを利用することで様々なメリットがありますが、以下は代表的な内容をまとめました。
- 繰り返し処理の自動化(条件に応じた処理)
- ケアレスミスが軽減
- ワークシートの操作性向上
- ユーザーフォームの作成
- イベント駆動型のプログラム作成
- ユーザー定義関数の作成
繰り返し処理の自動化(条件に応じた処理)
毎回繰り返し行う処理をプログラムにより自動化させることで、大幅な効率化が図れます。大掛かりな処理を自動化させるには、条件分岐など複雑な処理が要求される場合もあるので、少なからずExcelのVBAの知識は必須です。しっかりマスターするようにしましょう。
ケアレスミスが軽減
プログラムは命令した内容しか処理を行いません。同じ条件で同じ処理を行えば、何万回処理しようとも同じ結果しか返しません。ですので、誰でも経験がある単純な計算ミスなどのケアレスミスが軽減されます。
ワークシートの操作性向上
エクセルは表計算として帳票作成などに重宝されますが、ワークシートにユーザーフォームのようなコントロールを配置することもできます。直接ワークシート上に配置するので、わざわざユーザーフォームを開く必要もなく、コントロールを操作するだけで目的の処理を行うことが可能です。
ちなみにこのコントロールには、Axtiveコントロールが採用されています。Axtiveコントロールは、OLEコントロールとも呼ばれていて、ソフトウェアの部品をインターネットでの利用を考慮して拡張されたものです。
ユーザーフォームの作成
ユーザーフォームはオリジナルで作成したダイアログボックスのことを指します。ユーザーフォームには自由にコントロールを配置することができますので、利便性の高いユーザーフォームを作成することも可能です。
ユーザーフォームは、ワークシートに直接入力してもらいたくない場合や、エクセルに精通していないユーザでも簡単に処理を行えるよう設ける場合が多いです。データ入力や条件の設定など柔軟に対応できるのがユーザーフォームの魅力でもあります。
イベント駆動型のプログラム作成
VBAでは、ユーザーがアプリケーションに対して行った特定の操作と関連してプログラムを実行することができます。例えば、AシートからBシートへ移動した場合や、Aシートの内容を変更した場合など様々な特定の操作と関連したプログラムがあります。
そのようなプログラムはイベント駆動型プログラムと呼ばれており、特定の操作と連携した処理が実現できるので作業の効率化が図れます。
ユーザー定義関数の作成
ユーザー定義関数とは、独自で作成したワークシート関数のことを言います。SUM関数のような既存のワークシート関数ではなく、独自の関数を作成できますので、既存の関数を駆使して複雑な計算を行うことも可能です。使用頻度の高いワークシート処理は、ユーザー定義関数を作成した方が非常に便利です。
マクロウイルスとは
VBAのプログラミング言語を利用したマクロは非常に便利な機能です。しかし、世の中には悪意のあるマクロを作成する人物もいます。例えば、マクロを実行すると大量のファイルをデスクトップに作成したり、重要なファイルを勝手に内容を書き変えたりすることもできます。
このようにパソコンに悪影響を及ぼすプログラムはウイルスと呼ばれますが、その中でもマクロプログラミング言語で作成されたウイルスをマクロウイルスと呼びます。
インターネットが世の中に普及し、Web上で簡単にファイルをダウンロードしたりメールの添付ファイルを受け取ることができます。その中にマクロウイルスが含まれている可能性も高く、感染の被害は年々増加しているのが現状です。
VBAの知識があれば誰でもウイルスを作ることが出来ますので、他人が作成したファイルを利用する場合は注意が必要です。
また、Office製品にはマクロウイルスを未然に防ぐ機能もあります。こちらはセキュリティの設定を行うことでプログラムを有効・無効にすることができます。ただし、マクロを無効にしてしまうとマクロを勉強する際に実行されませんので、セキュリティレベルは「中」で設定するようにしましょう。
セキュリティレベルの設定
セキュリティレベルの設定の説明になります。Excelのバージョンによって設定方法が異なるので、注意してください。
マクロの有効化(Excel2007)
①リボンの下に表示されている「セキュリティの警告」の「オプション」をクリックします。
②「Microsoft Office セキュリティオプション」ダイアログボックスが表示されたら、「このコンテンツを有効にする(E)」を選択し「OK」をクリックします。
マクロの有効化(Excel2003)
①メニューバーの「ツール」→「マクロ」→「セキュリティ」を選択します。
②「セキュリティ」ダイアログボックスが表示されたら、「セキュリティレベル」タブの「中(M)コンピューターに損害を与える可能性があるマクロを実行する前に警告します。」を選択し「OK」をクリックします。
「中」に選択するとファイルを開く際に警告メッセージが表示されますので、ご自身で作成したマクロのみ有効にするようにしましょう。ただし、ご自身で作成したマクロでない場合はマクロウイルスの危険性もありますので、一旦無効にしてコードを確認できるのであれば内容を確認し、問題がなければ再度ファイルを開き有効にするようにしましょう。
まとめ
今回はマクロとVBAについて解説しました。マクロは非常に便利な機能ですが、マクロウイルスの危険性もあるということはご理解いただけたかと思います。次回からはより具体的にエクセルVBAの基本操作やプログラミングについて解説していきますので、1つ1つマスターしましょう。
次の記事: Visual Basic Editorの構造 >>
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。