この記事でわかること!
- マクロとは何かがわかる。
- マクロとVBAの違いがわかる。
- マクロをはじめて作るときに必要な初期設定方法がわかる。
- マクロの学習方法がわかる。
マクロとは?
Excel マクロとVBAの違い
Excelは日本語を理解できないのでわたしたちはマクロを日本語で書くことができません。マクロを表現するために用いるのがVBAというプログラミング言語です。
マクロとVBAの違い
- マクロ
- VBAで書かれた処理のかたまり。
- VBA(Visual Basic for Application)
- マクロを書くために用いるプログラミング言語。
マクロを使い始める前に必要な初期設定
マクロは便利な反面、ユーザの知らないところで処理を自動実行するようなマクロも作ることができます。セキュリティのためにデフォルトでは無効になっています。
マクロを使い始めるには事前に2つの設定を行いましょう。
Excel、Outlook、Power pointなどで共通の設定です。
マクロの設定
VBAを使い始めるには2つの設定が必要
- セキュリティ設定を変更する。
- 開発タブを表示させる。
(STEP1)マクロのセキュリティ設定を変更する手順(マクロの設定)
ExcelやOutlookではデフォルトではセキュリティのためにマクロが無効になっています。マクロには「マクロの設定」という専用のセキュリティレベルが用意されていて、トラストセンター(旧セキュリティセンター)から変更が可能です。
▲図はOutlookになっちゃってますが、Excelもほぼ同じです。
▲トラストセンター画面が開きますので左側メニューの「マクロの設定」をクリックします。画面右側にセキュリティレベルが表示されますので、マクロが実行できるセキュリティレベルを選択しましょう。わたしの環境ですと図の4つがありました。
マクロを実行するためには下記の3つのいずれかを選択すれば良いかと思います。
マクロの設定
- デジタル署名されたマクロに対しては警告を表示し、その他のマクロはすべて無効にする
- 「すべてのマクロに対して警告を表示する」
- 「すべてのマクロを有効にする」
デジタル署名はマクロに署名の発行が必要です。セキュリティは強化されますがデジタル署名の発行する手間がかかります。
「すべてのマクロに対して警告を表示する」は、マクロを実行するたびに警告のポップアップが表示されます。少し煩わしいですが意図しないマクロが自動実行されてしまうリスクを軽減できます。
「すべてのマクロを有効にする」は、どんなマクロも警告なしで実行できます。マクロを頻繁に活用する場合は快適ですが、警告が表示されないため意図しないマクロが自動実行されてしまうリスクがあります。
設定を反映させるために、Excelを一旦×ボタンで閉じて再度起動します。
(STEP2)開発タブを表示する手順
VBAは、VB Editor(VBE)にプログラムを記述していきます。VBEは「開発」タブメニューからアクセスします。しかし、デフォルトでは開発タブは非表示になっているため、開発タブを表示させましょう。
▲左側メニューの中の「リボンのユーザ設定」をクリックして、図の「開発」タブにチェックを入れます。チェックをいれたらOKボタンを押して「Outlookのオプション」画面を閉じます。
▲図のように開発タブが表示されたらOkです。
マクロを作成しよう。
マクロを使い始める準備ができましたので簡単なマクロを書いてみましょう。
VBAでコードを書いてみよう。
▲Outlookメニューの中の「開発」をクリックします。開発タブに切り替わりましたら「Visual Basic」をクリックします。
VBEはショートカットでも開けます。その方が早いのでおすすめです!
▲VBEが開きます。左側がモジュールを管理する「プロジェクトエクスプローラー」です。真ん中の黒い画面がコードを記述するコードペインです。
▲「挿入」メニューをクリック、「標準モジュール」をクリックします。
▲すると「標準モジュール」の中に「Module1」が追加されます。
▲Module1という名前だと、どんなプログラムなのかわかりにくいので名前をつけましょう。名前を変更するにはModule1を選択した状態で画面右下のプロパティウィンドウに表示された「オブジェクト名」に名前をタイプします。
▲わたしは「MyFirstTestProgram」というモジュール名に変更しました。
プロパティウィンドウが表示されていない場合
「プロパティウィンドウ」が表示されていない場合はVBEのメニュー「表示>プロパティウィンドウ」の順にクリックすると表示できます。邪魔な場合は同じ操作で非表示にできます。
▲モジュールにプログラムを書きます。プログラムコードは真ん中の黒い部分に記述します。今回はテストとして下記のコードを実行してみます。
Sub test() Sheet1.Cells(1, 1).Value = "Hello World!" End Sub
▲Sub ○○() End Subはマクロを書く時のお決まりの文句です。〇〇のとこにはマクロの名前を自分なように付けます。今回はsub test()と書いたのでテストという名前のマクロであることがわかります。マクロ名も日本語を使わずに半角英字の方が良いです。
testのマクロの処理内容は「Sheet1.Cells(1, 1).Value = “Hello World!”」と書きました。
Sheet1はシート1枚目、Cells(1, 1)は1行目1列目のセルつまりA1セル、valueはセルの値を表します。まとめると「シート1枚目のA1セルの値に”Hello World!”をセットする」という意味です。
マクロを実行してみます。マクロを実行するには2つの方法があります。VBEから実行する方法と、Excelから実行する方法です。
開発中は処理を1行書くたびにVBEから実行することが多いです。マクロが完成した後はExcelの開発タブから実行することになるかと思います。
マクロの2つの実行方法
- VBEから実行する。
- Excelの開発タブから実行する。
マクロを実行する方法(VBEから実行)
▲VBEから実行するにはVBEのメニューの中の「実行ボタン」をクリックします。あるいはF5キー押下でも実行できます。
マクロを実行する方法(Excel開発タブから実行)
▲Excelを開き「開発」タブをクリックし、「マクロ」をクリックします。
▲Excelファイルに保存されているマクロ一覧が開きますので先ほど作成した「test」マクロを選択して実行ボタンを押すとマクロが実行されます。
▲マクロを実行したらExcelの画面を見てみます。1シート目のA1セルに「Hello World!」という文字が入力されていることがわかります。
マクロを保存する方法
▲マクロが正常に動作したら保存します。通常のExcel(.xlsx)ファイルにマクロを保存することはできません。マクロを保存するにはExcelマクロ有効ブック(.xlsm)を選択して保存します。もしxlsxのままファイルを閉じてしまうと作成したマクロは消えてしまうので注意してください。
コード作成補助機能(「マクロの記録」)を使ってみる。
マクロの記録とは?
Excelにはマクロの記録と呼ぶVBAコード作成補助機能があります。マクロの記録は、ユーザのExcel操作をVBAコードを自動変換してくれる機能です。
マクロの記録機能が生成するコードは可変的な処理が苦手なので、マクロの記録機能だけで完璧なマクロを作成することを期待しない方が良いでしょう。マクロの記録を使う時は、ある程度ざっくりと「マクロの記録」で作ってから、人間が細かい部分のコード修正をするというやり方が一般的かと思います。
ただし、マクロの記録はマクロの作成をショートカットできるツールではありますが、下記のようなデメリットもありますのでなるべく自分で1から作成することをおススメします。
「マクロの記録」のデメリット
- リテラル値が頻繁に記録されてしまい可変的な処理が苦手。
- 反復処理を自動生成できない。
- 意図しない余分な処理が挿入されやすく冗長的になってしまいそのまま使うには人間がメンテナンスしずらい。
- 人間の意図を完璧にくみ取ってくれない。
※リテラル値というのは固定値のことです。マクロの記録ではセルに入力された値は関数でなければリテラル値になります。A1セルに10と入力したらcells(1,1).value = 10のようになります。実際のExcel仕事の現場では固定値を使うことばかりではありません。何かの演算や判断の結果でたまたま入力値が10だっただけだとしても、10という固定値が記録されてしまうこがあるのです。このように、マクロの記録では結果に至るプロセスまでを完璧にExcelに理解してもらうのは難しいです。
マクロの記録の使い方は?
▲マクロの名前を入力し、保存先を作業中のブックにしてOKボタンを押します。今回はMacro2という名前のマクロにしました。
▲先ほど「マクロの記録」ボタンがあったところが「記録終了」ボタンに切り替わります。この状態はレコード中を表します。この状態になるユーザのすべての操作を記録します。
▲Excel操作を行います。テストとして下記のようにExcel操作を行いました。
- A1セル => 1
- B1セル => 1
- C1セル => =A1+B1(表示結果は2)
▲「記録終了」ボタンをクリックします。
▲先ほど手作業で入力したセルの値をすべて削除してからマクロを使ってみたいと思います。開発タブの「マクロ」をクリックします。
▲先ほどマクロの記録で作成した「Macro2」があるのでクリックします。
実行すると削除したはずのセルのデータがマクロによって入力されて復元できるかと思います。
▲マクロを選択して「編集」ボタンをクリックします。
▲これがマクロの記録によって自動記録されたコードです。
たった、3つのセルへの入力なのに10行近いコードになってしまっています。ユーザのちょっとしたウィンドウ操作を拾ってしまって無駄なコードも挿入されていたり、冗長的な書き方になっているためです。
例えばA1セルへ値を入力するのに下記のように2行使っています。
Range("A1").Select ActiveCell.FormulaR1C1 = "1"
Range("A1").value = 1
と書けば1行で済むのに2行使っているのです。これが人間が読みづらくメンテナンスしにくいコードといった理由です。
マクロの記録が生成したコードはここで自分で修正できます。自動生成したコードはそのまま使わずに手直しして使った方がいいでしょう。
Excel VBAを学ぶ方法は?
公式ドキュメントを見ましょう。
まずは下記の公式ドキュメントをみましょう。
▲リファレンスを開くと左側のメニューのExcelのカテゴリの中に3つのメニューがあります。まずは「概要」と「概念」の箇所を読めばいいかなと思います。「オブジェクトモデル」は、VBAで使えるクラス・メソッドのマニュアルなので困ったときに参照する感じが良いかと思います。
このリファレンスは、他のプログラム言語でのプログラム経験がある人向けに書かれている(と思われる)ため、このリファレンスを理解することが難しく感じる方も多いと思います。
そんな方には次で紹介する初心者向けのVBA本や動画講座を持っておくと良いかと思います。
Excel VBAおすすめの本。
下記で紹介している「Excel VBAの教科書」が初心者の方の一冊目におすすめです。
▲Excel・Wordの基本的な使い方についての初心者向けの解説書です。かなり細かく丁寧に解説されています。著者の方のYouTubeチャンネルも併せて観るとより理解が深まるかと思います。
▲「Excel作業を自動化したいけどVBAはよくわからない・・・」という方でもPower Automate for Desktop(PAD)なら簡単に自動化できるかもしれません。PADは、Windows11にも公式搭載されたMicrosoftのRPAソフトウェアです。本書はPADでExcelなどのパソコン操作全般の自動化の基本がわかりやすく解説されています。
▲「Excel VBAの教科書」というとおりVBAの開き方から解説してるのですが網羅度が半端なくて満足感が高いです。(クラスモジュール・ユーザーフォーム・外部データ取り込み・JSON・Power Queryなど)。JSONやPower Queryは最近のExcelでの使用頻度高いかと思うので個人的にポイント高かったです。網羅度が高いゆえに分厚いです。個人的にVBA書でイチオシ。
Excel VBA マクロが難しくてわからない時は?
ココナラ(Coconala)で発注してみる。
VBAが難しくてどうしても自分で解決できなかったり、VBAを書く時間がなかったりする場合は、プロにお願いするという手段もあります。VBAの作成をお願いするならココナラも選択肢のひとつとしてオススメです。システム会社に発注することと比較すれば安いですし気楽に無料の見積もり相談ができます。
ココナラでExcelマクロの作成の見積もりをするには、まずはココナラに無料アカウントを作成します。
無料登録はこちら▲ココナラでの受注経験をもとに失敗しないための見積もり方法についてまとめました。
\ 登録・見積り無料、スマホからでもOK!/
まとめ
以上、VBAマクロの作り方についてご紹介しました。