Workship MAGAZINE書籍化第3弾!#ADHDフリーランス の新常識 他
- 隔週月曜更新!フリーランス・副業ニュース
VBAが便利なことはわかっても、具体的に何ができるかわからない人は多いでしょう。
そこで今回は、VBAの概要やマクロとの違いや、VBAでできることを7個ご紹介します!
これからVBAをはじめてみたい方は、ぜひご覧ください。
目次
VBA(Visual Basic for Applications)とは、Microsoft Officeのアプリケーション操作を自動化できる、プログラミング言語です。
VBAを駆使することで、Excel、PowerPoint、Outlookなどと連携した自動化ツールが作れます。
またVBAと似た言葉に「マクロ」があります。マクロとVBAの違いは、以下のとおりです。
具体的には、以下のようなイメージです。
ここからは、VBAの活用方法を7つご紹介します!
VBAはExcelで使われることが多く、以下のような作業を自動化できます。
Excelのちょっとした作業だけでなく、複雑な処理も自動化できます。
VBAを使えば、ExcelのグラフをPowerPointにコピペするツールも作れます。
定期的な報告資料や分析資料を自動化できるので、業務が楽になりますね。
Excelの自動化だけでなく、フォルダ整理ツールも作れます。
たとえば会社の部署名変更の影響で、ファイルの一括更新が必要になるケースがあると思います。
手動操作で修正するとミスが発生しやすく、時間もかかってしまいますよね。これらの作業は、VBAでツールを作れば効率化できます。
ファイル名一括更新、不要ファイルの一括削除、ファイルの一括移動などができるため、フォルダ整理が楽になるでしょう。
Excelで作ったデータ一覧から、レポートを作成することもあるでしょう。
データをレポート用のシートにコピペし、手動操作でPDF保存すると……時間がかかってしまいますよね。
VBAを使えば、ExcelシートからPDFへの出力を自動で行えます。データをレポートにコピペする手動操作が、ボタンクリックのみで終わるため、業務が楽になるのです。
VBAでは、Outlookと連携した自動化処理が作れます。
メールを一括送信できるツールも作れるので、営業の方はとくに業務が楽になりますね。
普段使っているExcelがコントローラになるため、使い方も簡単です。
Webから手動操作でデータを集めて、分析資料をまとめる方もいるのではないでしょうか。
一時的な作業であれば手動操作でも良いですが、定期的に同じ作業をする場合は……少し手間ですよね。
VBAを使えば、Webからデータを自動で取得するツールが作れます。応用すれば、以下のような業務を自動化できます。
VBAでは、以下のような画面を使った本格的な業務アプリが作れます。
ボタン、テキストボックス、リストボックスなど、画面に必要なツールはひととおり揃っているため、業務を根本から効率化するアプリが作れるのです。
自分だけでなく、部内や社内の作業効率化に繋がります。
VBAを習得することで、大きく3つのメリットがあります。
以下で、それぞれ詳しく解説します。
プログラミングと聞くと、難しい印象を持つ方もいるかもしれません。ただVBAは、環境構築が不要で、Officeさえあればすぐに始められます。
敷居の低さからエンジニアやプログラマーのような専門職以外でも始めやすく、ネットにも情報が多いです。
またプログラミングはほとんどの言語において基本構造が似ているため、VBAで身に付けたプログラミングスキルは他の言語を学ぶときにも活かせます。
VBAは、ExcelなどのOffice操作を自動化するプログラミング言語です。
そのためVBAを学んでいくことで、自然と業務効率化を考えるスキルが身につきます。
業務効率化を考え、提案できるスキルがあれば、仕事でも大いに役立ちますよね。
VBAのスキルがあれば、転職時にも役立ちます。
専門職以外でプログラミングスキルがある人は貴重です。
ITリテラシーが求められる企業に転職するときにアピールできますし、もちろんVBAエンジニアになる道もあります。
次に、Excel VBAを始める方法について解説します。
Excel VBAを始める手順は、以下のとおりです。
以下でそれぞれ詳しく解説します。
まず、VBAで作ったマクロを実行するための準備として、「マクロを有効化」します。手順は、以下のとおりです。
ⅰ. ファイルタブから、オプションをクリック
ⅱ. セキュリティ センタータブから「セキュリティ センターの設定」をクリック
ⅲ. マクロの設定タブから、「警告を表示してすべてのマクロを無効にする」を選択し、OKボタンをクリック
これで、VBAを実行する環境の設定が完了です。
VBAのプログラムがあるExcelファイルを開いたときは、以下のような警告が出ます。
警告メッセージの中央にある「コンテンツの有効化」をクリックするとマクロが実行できるようになるので、問題ありません。
VBAでは、ファイル起動時にプログラムを実行する処理が作れます。悪意のあるユーザが作ったファイルを開いてしまうと、ウイルスに感染したりデータを抜き取られたりする可能性もあるので、注意しましょう。
次に、VBAに必要な「開発タブ」をリボンに表示しましょう。
ⅰ. ファイルタブからオプションをクリック
ⅱ. リボンのユーザ設定の右側にある、「開発タブ」にチェックを入れて、OKボタンをクリック
次のように、開発タブが表示されていればOKです。
ここからは、開発用のエディタ(VBE)を使って、コードを書く手順を解説します。
開発タブの一番左にある、「Visual Basic」をクリックします。
クリックすると、VBAを書くためのエディタであるVBE(Visual Basic Editor)が起動します。
次に、簡単なサンプルコードを書いていきます。
まず、挿入タブから標準モジュールを選択します。
選択すると、コードを書くエリアが次のように表示されます。
ここに、サンプルコードを書いていきます。
VBAでマクロを書くときは、「Sub マクロ名」を入力してEnterキーを押し、処理を書くための「空のマクロ」を次のように用意します。
作成したマクロの中に、以下のような簡単なコードを書いていきます。
Sub 初めてのマクロ()
Worksheets("Sheet1").Range("A1").Value = "初めてのマクロを実行"
End Sub
今回は、「A1セルに値を書き込む処理」をサンプルで書いています。
ここまで準備ができたら、サンプルコードを実行してみましょう。
作成したマクロにカーソルを当てて、実行タブから「Sub/ユーザフォームの実行」をクリックするだけです。
上記のように、A1セルに「初めてのマクロを実行」が表示されていれば成功です。
VBEから実行はできましたが、VBAを知らないとできないですよね。
VBAを知らない人でも簡単に使えるようにするためには、シートに置いたボタンからクリックできるようにするのがおすすめです。以下でご紹介します。
ⅰ. 開発タブ → 挿入→ボタンをクリック
ⅱ. セルの範囲を選択してボタンのサイズを指定
ⅲ. さきほど作成したマクロを選択し、OKボタンをクリック
これで、マクロを実行するボタンの完成です。
A1セルの値クリア後にボタンをクリックすると、A1セルに値が表示されます。
作ったマクロをボタン作成時に選択するだけなので、とても簡単ですよね。
ここからはレベル別に分けて、VBAを独学で身に着けるための学習方法をレベル別に解説します。
未経験からVBAを始めるときは、まず基礎を学びましょう。
具体的には、以下の方法で学んでいくのがおすすめです。
VBAの基礎が学べるサイトはいくつかありますが、おすすめは以下の3つのサイトです。
『ドットインストール』は、動画でプログラミングが学べるサービスです。1動画約5分という短時間の学習動画が特徴。一つひとつが短くまとまっているため飽きにくく、初心者におすすめです。
また『パソコンスキルの教科書』、『いつも隣にITのお仕事』は、どちらもIT系のメディアです。テキストベースで学んでいきたい方にうってつけです。
プログラミングで大事なのは、わからないことを調べて解決する力です。
とはいえ、「いきなり調べても解決方法がよくわからない……」という方が多いのではないでしょうか。
そんな方におすすめなのが、マクロの記録です。マクロの記録を使えば、Excel操作を「自動でVBAに変換」できます。
たとえば、「セルに罫線を引く操作」をVBAで書く方法がわからないときは、以下のように操作するだけでVBAのコードが作れます。
ⅰ. 開発タブからマクロの記録を選択
ⅱ. マクロ名を決めてOKボタンをクリック
ⅲ. 罫線を引く操作を実行
ⅳ. 開発タブから記録終了を選択
これで操作をVBAで保存できました。
次に、以下の手順でマクロの中身を見ていきます。
ⅰ. 開発タブからマクロを選択
ⅱ. 記録したマクロを選択し編集ボタンをクリック
編集をクリックすると、VBAのコードが以下のように表示されます。
罫線を引くマクロを自動で作ると、上記のようなVBAが自動生成されます。
上記のプログラムを見れば、「Selection.Borders(〇〇〇〇〇)」で罫線を引く設定ができることが分かります。
「格子ではなく別の罫線を引きたい」という場合は、以下のように「Selection.Borders」の使い方をGoogleで調べましょう。
マクロの記録でプログラムを自動生成しつつ、使い方を検索する癖をつけるとプログラミングの習得が早くなります。
ある程度VBAの基礎が書けるようになったら、簡単な機能を作ってみましょう。
たとえば、日々のExcel操作を箇条書きにしてみてください。
書き出しが終わったら、自動化すると工数削減につながりそうな業務を手短にするVBAを作ってみましょう。
具体的な作り方は、以下がおすすめです。
たとえば、特定のデータを絞り込み、グラフを作成してレポート出力する処理の場合は、以下のようにコメントを書きます。
Sub レポート出力()
'①一覧データからデータを絞り込む
'②絞り込んだデータをグラフ作成用のシートにコピペする
'③コピペしたデータを使いグラフを作成する
'④グラフをレポート用のシートにコピペする
'⑤レポート用のシートをPDFで保存する
End Sub
先にコメントを書き、ひとつずつ処理を調べて作っていきます。
書き方を調べるときは、レベル1で覚えたマクロの記録を活用するとよいでしょう。
手短な処理を自分で作れるようになったら、演習問題を解いていくのがおすすめです。今まで学んできたスキルで足りない基礎知識を補っていきましょう。
演習問題は、『エクセルの神髄』のマクロVBA練習問題がおすすめです。練習問題用のExcelファイルも配布されており、全ての問題に解答用のVBAコードが載っています。
腕試しにもなるので、ぜひ挑戦してみてください。
演習問題を難なくこなせるようになったら、本格的なツールを作ってみましょう。
レベル2で考えた日々のちょっとした操作ではなく、「Excelの業務自体を無くせないか?」という視点で、業務効率化ツールを作ってみるのがおすすめです。
ただしいきなり作るのではなく、以下のように考えてから作ってみましょう。
ここまで作れると、社内でもVBAマスターとして認知され始めるころですね。
Excel単体で本格的なツールが作れるようになったら、外部アプリケーションと連携したツールを作ってみましょう。
たとえば、以下のようなツールです。
Excel以外のOfficeを始めとする、他のアプリケーションを操作できれば、どんなアプリでも作れるようになるでしょう。
最後に、VBAを独学で習得するコツについて解説します。コツは、大きく以下の2つです。
それぞれ詳しく解説します。
VBAは敷居が低くて始めやすいとはいえ、プログラミング言語です。そのため慣れないうちは調べても解決できないことが多いでしょう。
「1日中調べても解決できない……」という状態が続くと、モチベーションも下がってしまいますよね。
そんなときのために、以下のような環境を用意しておきましょう。
プログラミングスクールや『MENTA』は有料ですが、その分質問が返ってきやすいです。
『teratail』のような質問サービスを利用しつつ独学してみて、思うように進められない場合はMENTAでメンターを利用するのがおすすめです。
プログラミングを学ぶときは、エラーの原因がわからず手が止まってしまう人が多くいます。
また「処理は成功したのに、意図した結果にならない……」となると、お手上げになってしまう人もいます。
上手くいかない原因を調べるために、1行ずつコードを追っていく方法を覚えましょう。具体的には、「Stop + イミディエイトウィンドウで変数の値を確認する方法」を覚えておくと良いでしょう。
VBAのコードに「Stop」を書くと、Stopを書いた場所で処理が止まります。止めたときに、イミディエイトウィンドウで「?変数名」を入れてEnterキーを押すと、以下のように値を確認できます。
上記の例の場合は、変数intNum2に111を入れるつもりが、誤って11.1を入れてしまっています。
Stopは何個でも設置できるので、確認したいタイミングで設定すればOKです。
今回は、VBAの概要やマクロとの違い、VBAでできることを7個紹介しました。
ちょっとした作業をVBAで自動化するだけで、楽になるものはたくさんあります。簡単なマクロからでいいので、ぜひ作ってみてくださいね。
こちらもおすすめ!▼
【初心者向け】Google Apps Scriptでできること10選!自動化で業務効率を大幅UP Workship MAGAZINE