10/14(Mon)
2023年9月19日 17:29 更新
VBAとは、Microsoft Officeで作業を効率化するためのプログラミング言語の名称です。本稿では、マクロとの違いについて触れながらVBAが何かを解説し、VBAの魅力や基礎的な使い方を初心者の方でも分かりやすいように紹介していきます。
Excelなどの作業を効率化したいと考えている方や、VBAを学んでマクロを使えるようになりたいと考えている方はぜひご覧ください。
VBA(Visual Basic for Applications)とは、Microsoft社が開発したプログラミング言語の名称です。ExcelやPowerPoint、WordといったMicrosoft Officeに含まれるアプリケーションを操作するためのプログラムを書く言語であり、日常的な作業や複雑な操作などを効率化するために作られました。
VBAと非常に関係の深い言葉として「マクロ」があります。マクロとはExcel等に搭載された機能の名称で、行いたい操作をプログラム化して自動化することができます。
例えばSchooオリジナル授業『Excel マクロ/VBA入門1 マクロの仕組み』では、自動化の例として文字の入力や行の挿入、合計の計算、背景色の変更などが挙げられています。
Excelでマクロを動かす方法としては、「マクロの記録」という機能を使う方法と、VBAでプログラミングする方法があります。マクロの記録とはプログラミングなしにマクロのプログラムを作成する機能です。お手本となる操作手順を記録すると、裏でその操作を自動的にVBAに書き換えてくれます。
また、マクロはExcel作業の効率化のために使用されることが多いですが、WordやPowerPoint など他のOffice製品にも搭載されています。
VBAとマクロは混同されやすい言葉ですが、両者は異なるものです。
Schooオリジナル授業『誰も教えてくれない、Excelマクロ/VBAの使い方』の講師で、一般社団法人 実践ワークシート協会の代表理事を務める田中亨先生は、マクロはExcelを自動実行する機能の名前であり、VBAはマクロで使うプログラミング言語の名前である、と説明しています。つまりマクロとVBAは、Excel等のMicrofost Officeツールの機能とその機能を利用するための言語、という関係性にあるのです。
また、VBAはプログラミング言語なので、ExcelをはじめとしたMicrosoft Office製品のマクロに留まらず、その他VBA対応のアプリケーションを操作することが可能です。
上でご説明した通り、VBAはエクセルのマクロを使うためによく利用される言語です。では、VBAを使うメリットには何があるのでしょうか。ここでは、①繰り返し操作の効率化ができる、②マクロ記録より複雑な動きに対応できる、の2点について解説していきます。
VBAを使って一連の作業をプログラム化しておくと、定期的に繰り返し行わなくてはいけない作業も効率的かつミスなく進めることができます。
一般的に人は、作業が複雑であればあるほどミスをしやすくなりますが、VBAを使って一度正しいプログラムを組んでしまえば、必ずその通りに動かすことが出来ます。もちろん処理スピードも手作業で行うより速いので、作業の効率化と生産性の向上に大いに役立てることができるのです。
例えば定期的に出力データをもとにレポートを作成する場合、マクロの実行一つで出力データを所定のレポートフォーマットに整えることができれば、都度成型にかかる時間を大幅に短縮することができるでしょう。
前述の通り、エクセルには「マクロ記録」という機能があり、VBAを書かなくても操作の自動化が可能です。一方マクロ記録の機能には限界があり、複雑な処理が出来ないため、そういった場合にはVBAでマクロを組む必要が生じます。
具体的には、複数のシートにまたがって同じ処理を行うような繰り返し処理(ループ処理)や、セルの値が500を超えていれば文字色を変えるなどの条件分岐処理は、マクロ記録では対応が出来ないのです。主なマクロ記録ではできないことは以下の通りです。
ここまで、VBAの概要や使うメリットについて解説してきました。続いてここからは、VBAを使ってできることについて、発展的な内容も含めてご紹介します。
例えば請求書の発行やレポートの作成など、Excelを使って日々同じ作業を繰り返す業務は多くの会社で存在するのではないでしょうか。メリットの項でも触れた通り、これら繰り返し行わなくてはいけないルーチン業務の自動化は、VBAの用途として最も一般的なものの一つです。
VBAを使うと操作を一つずつプログラム化することが出来るので、手で行うExcel作業は基本的にすべて自動化することができます。またExcelに留まらず、Word・PowerPointでの書式の一括変更などにも活用できます。
ユーザー定義関数とは、VBAを使って作成するオリジナルの関数のことです。ExcelにはIF関数やSUM関数など様々な関数が存在しますが、そこにない機能をVBAで記述し、関数として名前をつけることで既存の関数と同様に使用することが出来るのです。
例えば単純な例で言うと、税込み価格を計算するのに「=A1×1.1」などと計算をしていた所、それ専用のユーザー定義関数(TAX)を作成し、「=TAX(A1)」とすることで同様の計算ができるようにするなどです。複雑な計算をする必要があるものでも、ユーザー定義関数化しておくことで簡単な記述で処理をすることができるため、効率化につなげられます。
VBAを使えば、エクセルなどのファイルやシート上の操作だけではなく、フォルダの操作もプログラミングすることができます。
例えば定期的に作成するレポートや請求書など、フォルダ内のファイルが増えすぎると可視性が悪くなることがあります。このような時にVBAを使えば、規則的な名前の新規フォルダを作成したり、ファイルを指定のフォルダに移動・仕分けしたりすることができます。
『Excel マクロ/VBA応用1~フォルダ操作~』では、フォルダの指定・フォルダの作成の方法についてもご紹介しています。興味がある方はぜひご覧ください。
VBAを使用すれば、WordやPowerPointなどの他のOffice製品を操作することもできます。エクセルに比較すると使用頻度は下がるかもしれませんが、VBAで作成したマクロにショートカットキーを割り当ててWordの書式設定操作を一操作で完了できるようにしたり、PowerPointの複数のスライドの色やフォントを一括で変更したりすることが可能です。
また、エクセルで作ったグラフをパワーポイント資料に貼り付けるなど、複数のOffice製品を跨いだ作業を行う場合にもVBAは活用できます。例えばSchooオリジナル授業『Excel マクロ/VBA応用2~フォルダ内のファイルの繰り返し処理~』では、Excelで作成した表を、貼る位置なども定めてPowerPointに自動で転記する流れを紹介しています。
ユーザーフォームとは、マクロの実行やデータの入力などを行うための、オリジナル画面をExcel上に作成する機能のことで、VBAを使って作成します。例えば、上の授業画像の赤枠部分はユーザーフォームで作成されており、ここではグラフやスライドの操作をするマクロを起動するためのボタンが表示されています。
ユーザーフォームがあれば、より操作を直感的に行うことができます。そのため、例えばExcelファイルの作成者以外の人に定期的なデータ入力を依頼したり、Excelの操作に慣れていない人にマクロ実行の作業をお願いする場合などのシーンに便利な機能です。
ここまで見てきたように、VBAを使えばExcelやその他Office製品で行う作業の自動化ができ、業務効率化に役立てることができます。
その一方で、VBAにもできないことは存在します。ここからはVBAでできないこととして①MicrosoftOffice外の操作、②膨大なデータの処理、③WEBやアプリの開発、の3点をご説明します。
VBAはVB(Vidual Basic)というプログラミング言語を元に、MicrosoftOfficeの製品を機能拡張する目的で設計された言語です。そのため、基本的にMicrofostOfficeの製品上で使うことが前提となっており、VBAを使って直接的にその他のツールを操作することは困難です。
一方、Excelなどを介して他のツールと連携させることは可能です。例えばAdobe社が提供するPDF編集ソフトのAcrobatはVBAで利用できるライブラリ(※)を提供しているため、Excelを介してPDFファイルを編集することができます。また、Microfost以外の会社が作る表計算ソフトなどでVBA対応のものが存在し、これらは例外的にVBAで直接的な操作が可能です。
(※)関数や機能などのよく利用されるプログラムを切り出したもの
VBAを使うとExcelなどでデータの処理・加工が自動化できますが、データ量が多くなると処理時間が長くかかったり、ファイルが落ちてしまったりすることが発生します。
VBAの記述の方法を最適化して高速化を図ることはできますが、前提としてVBAはエクセル等のOffice製品を操作するための言語です。そのため、エクセルであれば約100万行、Access(Microsoftのデータベースソフト)であれば2GBなど、VBAの処理可能範囲は各種ツールの上限に依存するところがあります。
このことから、膨大なデータ処理を目的とする場合は、VBAよりもPythonやR言語などの他のプログラミング言語を使用する方が適していると言えるでしょう。
VBAはプログラミング言語の一種ですが、Microsoft Office製品の操作という本来の用途を外れたWeb開発やモバイルアプリ等の開発には使用できません。
そのため、例えばExcel上でオセロなどの単純なゲームアプリや、Outlookでメールを自動送信する独自アプリを作ることは可能ですが、アンドロイドやiOS用のアプリを作ることなどは出来ないのです。また同様に、VBAはExcelを介してキーワードを検索ボックスに入れたり、Webブラウザを開いたりすることができますが、WEBサービスを作ったりホームページを作ったりすることはできません。
VBAを使ってできること・できないことを確認したところで、ここからは、VBAの用途として最も一般的な「エクセルのマクロ」を題材として、VBAの基本の使い方についてみていきます。
Schooオリジナル授業『Excel マクロ/VBA入門2 マクロの基本操作』にご登壇の熊野 整先生のレクチャーをもとに、「セルB3に100を入力する」という簡単なプログラムの作り方をご紹介しますので、ぜひ手元でも操作しながらご覧ください。
エクセルにおけるVBAの記述やマクロに関連する機能は、上の画像で示す「開発タブ」の中にありますが、初期設定では開発タブは表示されていません。そのためエクセルでVBAを使うにはまず、設定で開発タブを表示させ、機能にアクセスできるように準備する必要があります。
はじめに、Excelの「ファイル」タブを選択すると下の画像のような画面に遷移します。そして左メニューにある「その他」の中から「オプション」を選択します。
オプション画面が立ちあがったら、次に「リボンのユーザー設定」を選択し、画面の右側の表の中から「開発」にチェックを入れ、OKボタンを押します。
これで、エクセルの上部タブに「開発」タブが表示されるようになります。
前項のように開発タブが表示できたら、続いて「標準モジュール」を用意していきます。標準モジュールとは、簡単に言えばVBAのプログラムを記述する場所のことです。
上図はExcel・標準モジュール・マクロの関係性を表した図です。オレンジ枠の部分が標準モジュールを指しており、標準モジュールは一つのExcelファイルに帰属しています。またModule1は1つの標準モジュールを指しており、Module2、Module3と増やしていくことも出来ます。そして、標準モジュールの中にある「マクロ1」「マクロ2」などが、VBAで書かれた各処理を示しています。
この標準モジュールを作成するにはまず、開発タブの中のVisual Basicと書かれた部分を押下します。
すると、下記の画像のようなVBAの操作画面が開きます。
次に、対象としたいファイル名(ここではVBAproject(第二回. 220217))を選択します。その状態で上部にある「挿入」タブをクリックすると、プロシージャ・ユーザーフォームなどのメニューが出現するので、標準モジュールを選択します。
これで、標準モジュールの作成は完了です。また、この操作は上部の挿入タブからだけではなく、ファイル名のところで右クリックして表示できる挿入メニューからも行うことができます。
前項までの操作をすれば、「標準モジュール」とその配下に「Module1」という項目が出てきます。VBAのコードはこのModule1の中に記述していきます。
今回は、VBAを使って「セルB3に100を入力する」という操作を行います。そのためのコードは、次の通りです。
VBAには記述のルールがあり、ここではプログラミングの始まりにSub、終わりにはEnd Subと書いています。このSub~End Subをプロシージャと呼び、プログラムの一つのかたまりを指します。
また、「Range」とはVBAでセルを指定するときの書き方の一つです。このコードではB3セルを指定した上で、「=100」で指定の数値を反映するようにしています。
コードの記述が完了したら、続いてそれを実行していきます。
Visual Basic操作画面の上部メニューにある、緑色の右向き三角形のボタンがコードの実行ボタンです。
押下することで、記述したVBAのプログラムが作動します。実際に押してみると、次のようにB3に100という数字が入りました。
プログラムが完成したら、最後に保存も忘れないようにしましょう。ここで記述したVBAはExcelファイル上で作成しているので、Excelファイルを保存すれば、VBAも保存されます。
ただし、VBAの記述やマクロが含まれるExcelファイルをそのまま保存しようとすると、次のように「マクロなしのブックに保存できません」というエラーになります。
そのため、VBA記述のあるエクセルファイルを保存する時は、ファイルの種類を「マクロ有効ブック」に変更して保存する必要があります。
ここからはより本格的にVBAを学びたいと考える方に向けて、学習の流れと学習方法についてご紹介します。学習方法としては書籍・動画・スクーリングの3つの方法について、それぞれのメリット・デメリットを見ていきましょう。
まず学習の流れですが、Schooオリジナル授業『誰も教えてくれない、Excelマクロ/VBAの使い方』の田中先生は、VBAを身につけるには①素材を覚える、②実技でのトレーニング、双方が欠かせないとお話されています。
VBA学習における素材とは、オブジェクトや構文・VBEの使い方などの、VBAを書く上で必要となる知識のことです。
VBAの基本的な使い方の項でも触れた通り、VBAには他の言語と同様に、プログラミング言語としての所定の書き方やルールが存在します。外国語を単語や文法の知識なく使いこなせないのと同様に、基本的な知識なくVBAを使いこなすことはできません。そのため、まずは基本のルールを抑えることがVBA学習の第一歩となります。
またVBAを実践で使いこなすためには、構文などの知識をインプットするだけでなく、プログラムに望む動きをさせるためにはどんな組み方をする必要があるのかを考え、実行する力が求められます。
実務で発生する課題はシーンによって千差万別です。そのため、これら課題に柔軟に対応するには知識を組み合わせる力や構成力・発想力が求められます。またこれらの力は繰り返しVBAを記述・実行して練習することで身につくため、VBAを実践レベルで使いこなすためには、実技でのトレーニングを重ねることも必要なのです。
VBAはとても身近なプログラミング言語なので、様々な教材や学習方法が存在します。ここでは代表的な学び方として書籍・動画・スクールの3つの方法と、それぞれのメリット・デメリットについてご紹介します。
メリット | デメリット | |
書籍 |
|
|
動画 |
|
|
スクール |
|
|
VBAは実務での需要も高いため、レベルに応じて様々な書籍が出版されています。
書籍を使うメリットには、体系的に学べること、情報の正確性、自分のペースで学べることが挙げられます。また、書籍は1冊2,000~4,000円程度のものが多く、講座の受講に比べ安価に学習できるのも魅力でしょう。
一方で、書籍では実際の動作を目で確認しながら学ぶことが出来ないのはデメリットです。また教え手に質問も出来ないため、分からないことが出てきた場合は自力で解決する必要があります。
そのため、書籍は、自分で計画的に学習するのが得意な方や、お金をかけずに自分のペースで学びたいと考える方におすすめの学習方法と言えるでしょう。
VBAの動画教材には大きく分けて、Youtubeのような無料で配信されているものと、Schooのようなオンライン学習サービスが提供しているものがあります。
動画学習の主なメリットは、時間や場所に縛られないこと、講師の操作画面を通じて実際の挙動を視覚的に学べること、再生速度調整や飛ばし見など自分のペースで学べること、が挙げられます。また、無料または安価に視聴できる動画も多く、費用面でも魅力があります。
一方で、特にYoutubeなどの単発の動画は体系的に学べる内容になっていないものも多いです。また、基本的に双方向性ではないので、疑問点があっても自分で調べなくてはなりません。
そのため動画は、マイペースに学びたい方、視覚的に学ぶのが合っている方、ある程度自分で調べながら学習を進められる方に向いている学習方法と言えるでしょう。
書籍や動画を使った独学の他、パソコンスクールやプログラミングスクールの講座を活用してVBAを学ぶ方法もあります。
スクールでの講座は情報の正確性が高く、体系化されたカリキュラムに沿って実際に手を動かしながら学べることがメリットです。プログラムはスクールによって対面のもの、オンラインのもの双方がありますが、基本的に質問対応や理解度テストなどフォローアップが充実していることが多いです。
一方で、レベルや内容にもよるものの、受講に数万~10万円以上かかるものもあり、書籍や動画に比べて費用負担は重くなります。また、しっかり体系的に学べる分、一定の頻度で講義を受け続けなくてはいけないのは人によってはデメリットです。
そのため、一定期間で本格的に学習を進めたい方、独学で学ぶ自信のない方におすすめの学び方です。
ここからは、VBAが学べるSchooのおすすめの授業をご紹介します。Schooでは、VBAについて基礎的なものから応用的なものまで幅広く学ぶことができるので、ぜひ持っているスキルや知識に合わせて活用してください。
< コース紹介 >
本稿の「VBAの基本的な使い方」で用いた説明は、この授業の第二回から引用したものです。この授業では、初めてマクロ/VBAに触れる方に向けて、基本的な使い方を詳しく解説しています。授業の中では本稿でご説明した内容に加え、行列・書式の操作などの基本を説明しているので、ぜひ実際に手を動かしながら学んでみてください。
先生プロフィール
熊野 整(くまの ひとし)
新卒でモルガン・スタンレー投資銀行本部に入社、顧客企業のM&A、資金調達案件に携わる。現在は、インターネット企業の事業マネージャー。仕事のかたわら、主に週末に「投資銀行が教える!エクセルで学ぶビジネス・シミュレーション」セミナーを全国各地および海外で開催し、8ヶ月で2,000名以上が参加。企業研修も実施中。
< コース紹介 >
この授業は、マクロ/VBAの経験はあるが躓いてしまったという方や、上記のExcelVBA入門を修了した方を対象にしたコースです。Excelのシート上での繰り返し作業(For Next)や条件分岐(IF Select Case)、その他表やシートに関するマクロを学べます。基本的なVBAのコードの記述やマクロの実行ができるようになりたいと考える方におすすめの授業です。
先生プロフィール
米津 弘子(よねづ ひろこ)
IT技術系 企業研修講師として、年間約200日登壇。 ITツールを活用した業務効率化をテーマにした研修の登壇多数。 DXに関する研修を多数担当。 研修内容はOffice研修、プログラミング研修(ExcelVBA、Java、Python...etc)、RPAツール(WinActor、Uipath、PowerAutoMate)研修、データベース研修、Web研修など幅広く担当。
< 授業紹介 >
この授業は、VBAの基本的な使い方やExcelのシート内での使い方をマスターしている方に向けたコースです。Excel上だけではない幅広いシーンでのVBA活用法を学べます。本稿の「VBAでできること」でご紹介したファイルの操作やパワーポイントの連携方法など、より発展的な内容を学びたいと考える方はぜひご覧ください。
< コース紹介 >
この授業では、一般社団法人実践ワークシート協会代表理事の田中亨先生から、エクセルやVBAを使いこなすための基本的な知識・考え方を学びます。田中先生はExcelのエキスパートとして日本で初めてMicrosoft社に外部MVPとして表彰を受けた方で、Schooでも人気の授業を担当されています。噛み砕いた分かりやすい説明でマクロ/VBAの使い方を学びたい方は、ぜひご覧ください。
先生プロフィール
田中亨(Office TANAKA)
Microsoftが優れた技術者へ授与するMVP(Most Valuable Professional)では、日本人で初めてExcel部門を受賞。各地でExcelに関するセミナーや講演を実施し、受講者は50000人を超える。「Excel 関数/数式 完全制覇パーフェクト」「Excel VBA 逆引き辞典パーフェクト」など著書多数。
本稿では、VBAとはどのようなものなのか、そして何ができるのかについて詳しく解説していきました。VBAはビジネスシーンで業務を効率化するためにとても役に立つツールです。
Schooでは、VBA・マクロについて詳しく学べるコースや授業だけでなく、自分のスキルアップや日々の暮らしに役立つ8,500本以上の授業を用意しています。ぜひ隙間時間を活用し、学びを楽しんでみてください。