目次

マクロでできること

表計算ソフトの Excel (エクセル)に標準で付いているマクロという機能を使用すると、 Excel のセル操作、ワークシート操作、ワークブック操作など、 Excel 上の各種操作に加えて、 Excel を飛び越えてというか、 Excel より外側の、パソコン上にあるフォルダ、ファイルの操作を、全自動化とまではいかなくても半自動化できるようです。

Excel に標準で付いているマクロという機能のメニュー。
Excel に標準で付いているマクロという機能のメニュー。

Excel のマクロで、以下の一覧のような操作を行うことができるようです。

セル
値の取得・設定、文字サイズ・フォント・文字色・背景色・罫線・表示形式の書式設定、等、マウス・キーボードで行う繰り返すような作業のほとんどをカバー。
ワークシート
新規作成、名前の変更、文字の検索と置換、セルのコピーと貼り付け、画像挿入、グラフの操作等、マウス・キーボードで行う繰り返すような作業のほとんどをカバー。
ワークブック
新規作成、名前を付けて保存、上書き保存、閉じる、等、マウス・キーボードで行う繰り返すような作業のほとんどをカバー。
パソコン上のフォルダ・ファイル
新しいファイル・フォルダ作成、コピー、移動、削除、名前の変更、名前取得、サイズ取得、拡張子取得、検索、テキストファイルの読み込みと書き出し、等。
その他
Excel の画面上にメッセージ表示、独自の入力フォーム作成、など。
Excel の操作画面にメッセージを表示するダイアログボックスというものです。表示する文字は自由に変更できます。 3 行のマクロを書くことで、このダイアログボックスを表示できます。
Excel の操作画面にユーザーフォームというものを表示しています。ユーザーフォームに配置する入力欄、ボタン、など自由に変更できます。ワークシートの内容をユーザーフォームに表示したり、ユーザーフォームの入力内容をワークシートに転記したりできます。

普段、マウスとキーボードで行っている、 Excel 上の繰り返しの操作をマクロから行うことができ、人の手では結構な労力のかかる、数百、数千の大量の処理作業を正確に行うことができるようです。

Excel のマクロという機能で Excel の操作、パソコンのフォルダ、ファイルの操作ができる。
Excel のマクロという機能で Excel の操作、パソコンのフォルダ、ファイルの操作ができる。

目次まで戻る

マクロの中身

Excel のマクロの中身は、 Excel VBA (エクセル ブイ ビー エー)というプログラムでできているようです。

Excel VBA は、数あるプログラミング言語の中のひとつで、 Excel Visual Basic for Applications (エクセル ビジュアル ベーシック フォー アプリケーションズ)の略称のようです。

Excel VBA の他に、 Word VBA 、 Access VBA などもあるようですが、 Visual Basic for Applications の部分は共通していて、いずれも Visual Basic というプログラミング言語を基にしたプログラミング言語のようです。 Excel VBA は、 Excel 上で動くプログラミング言語のようです。

Excel のマクロで何かをやりたい場合は、「 VBA やりたいこと」で検索すると、大体、所望の情報を得ることができると思います。 VBA 関連で検索をかけると、主に Excel VBA の情報が出てくることが多いように思います。

Excel VBA は、プログラミング言語のひとつで、 Visual Basic が基になっている。
Excel VBA は、プログラミング言語のひとつで、 Visual Basic が基になっている。

Excel には、マクロを実行する機能だけではなく、マクロの中身の Excel VBA を編集するための機能も付属しているようです。それが、 Visual Basic Editor (ビジュアル ベーシック エディタ)という Excel 上で動くアプリケーションのようです。

Visual Basic Editor は VBE と略して書かれていることも多いため、 Visual Basic Editor 関係の事をインターネットで検索する時は、「 VBE キーワード」のほうが情報を見つけやすいかもしれません。

Visual Basic Editor は、 Excel の上部にあるメニューの ツール ≫ マクロ ≫ Visual Basic Editor をクリックするか、 Alt + F11 のキーボードショートカットで起動します。 Visual Basic Editor は、 Excel 上で動作するので、 Excel を閉じると同時に終了します。

Excel に標準で付いている Visual Basic Editer という Excel VBA を編集できるアプリケーション。
Excel に標準で付いている Visual Basic Editor という Excel VBA を編集できるアプリケーション。

Visual Basic Editor のバージョン情報を見てみると、 Visual Basic 6.5 の文字があります。 Visual Basic というプログラミング言語の書き方を基本にして、マクロの中身の Excel VBA を編集できるようです。

Excel に付属している、マクロを編集するアプリケーション「 Visual Basic Editer 」のバージョン情報を見ると、 Visual Basic x.x の文字があります。
Excel に付属している、マクロを編集するアプリケーション「 Visual Basic Editor 」のバージョン情報を見ると、 Visual Basic x.x の文字があります。

以下の画像は、 Visual Basic Editor でテスト用に作成したマクロの中身を表示したものです。

マクロの中身は、 Excel VBA のプログラムになっている。 Sub から End Sub までが、 1 個のマクロになっている。この文章をソースコード( source code )と呼ぶらしいです。
マクロの中身は、 Excel VBA のプログラムになっている。 Sub から End Sub までが、 1 個のマクロになっている。この文章をソースコード( source code )と呼ぶらしいです。

上の画像の右側の画面に、 Sub の文字から始まる文章のようなものが表示されていますが、 Sub から End Sub までが、 1 個のマクロになっていて、 Sub の後の Macro1 がマクロの名前になっています。

Sub と End Sub の間には、 Excel VBA のプログラムの命令が 1 行ずつ書かれていて、マクロを実行すると、 Sub と End Sub の間の命令が上から順に 1 行ずつ実行されていきます。

この Sub から End Sub までの一連の文章を、プログラム分野の用語でソースコード( source code )と呼ぶらしく、 Excel のマクロを作る時は、 Excel VBA のソースコードを書いていくことが多いようです。

3 , 4 行目の緑色の文字で書いてある、

'Macro1 Macro
'マクロ記録日 : 2016/10/19 ユーザー名 : xxx

の文字は、これもまたプログラム分野の用語でコメントというもので、コードの中に入れることのできるメモ書きのようなものなので、プログラムの処理には影響しないようです。プログラムを実行してもコメントの部分はスキップされて次の命令に進むようです。

Excel と VBE と VBA と Macro の関係です。
Excel と VBE と VBA と Macro の関係です。

目次まで戻る

マクロの作成に必要なもの

Excel のマクロは、パソコンに Excel がインストールされていれば、作成することができるようです。他に特別なアプリケーションをインストールしなくても良いので、少し試してみるということもできるようです。

Excel のマクロという機能は、 Excel に含まれているので、 Excel がインストールされていれば使用できる。
Excel のマクロという機能は、 Excel に含まれているので、 Excel がインストールされていれば使用できる。

目次まで戻る

マクロの作成は簡単 ?

Excel を少し使うことができれば、マクロの作成もすんなりいくと思います。コピー & ペーストで動くマクロのサンプルから試していけば、複雑なマクロも作れるようになると思います。かくいう私も、初めてのプログラミングは Excel VBA によるマクロの作成でした。

目次まで戻る

マクロの作成方法

便利な Excel のマクロですが、マクロで目的の操作をするためには、自分でマクロを作る必要があるようです。 Excel でマクロを作成する方法は、以下の 2 通りあるようです。

  1. ユーザー(自分)の操作を記録する。
  2. Excel VBA のソースコードを書く。

1 の方法は、以下のような特徴があるようです。

  • Excel 上でユーザー(自分)が行った操作を Excel が自動で記録してくれてマクロができあがりますが、 Excel の外側というか、パソコン上のフォルダ、ファイルの操作内容までは記録されないようです。
  • 例えば Excel 上で 10 回の操作を行うと 10 回の操作が記録された 1 個のマクロが作成されます。作成されたマクロを実行すると 10 回の操作が再現されます。自動で作成される代わりに 10 回の操作が必要です。
  • 記録されたマクロの中身の Excel VBA のソースコードを見て、この操作の時はこのソースコードを書けば良いのか。という風に実際の操作とソースコードがつながっているのがわかるので、ソースコードを書く時の参考になります。

2 の方法は、以下のような特徴があるようです。

  • Excel VBA のソースコードを一から書く必要がありますが、 Excel の外側というか、パソコン上のフォルダ、ファイルの操作を行うこともできるようです。
  • 例えば、 1 個のマクロを作成して 10 回の操作をおこなうことができるようです。 1 個のマクロで数百、数千の操作が可能です。操作が 0 回の代わりにソースコードを書くことが必要です。

上記 1 と 2 のどちらの作成方法が良いのかという疑問が出てきます。私は以下のような感覚で視ています。

  • 1 の作成方法は、一度は試してみて機能の確認をするほうが良いと思います。あとは Excel VBA のソースコードをどう書けば良いのかわからない時の参考用に使用できます。
    私の場合、セルの列幅、行高を細かく調整する、セルに複雑な罫線を描く、見出し行を入力するなど、表示の調整を細かく行いたい時は、この方法でできたソースコードをコピー、ペーストして再利用しています。時間が無い時に便利です。
  • 2 の作成方法は、 1 個のマクロで多数の繰り返し処理を行えるので 2 の作成方法が中心になると思います。私の場合も、マクロの作成は 2 の方法が中心です。 1 の方法と複合していることも多いです。
    Excel VBA 関連の書籍、ウェブサイトも豊富にあるので良いと思います。

上記 1 と 2 の作成方法で実際にマクロを作成してみたいと思います。例として Excel のワークシートの A 列に 1 から 10 までの連番の数字を入力するマクロを作成してみます。

A 列に 1 から 10 までの数字を入力するマクロを作成してみます。
A 列に 1 から 10 までの数字を入力するマクロを作成してみます。

目次まで戻る

セキュリティ設定

その前に、上記 1 と 2 の作成方法で共通する Excel の設定をしておきます。それは、マクロセキュリティの設定です。具体的には、 Excel のマクロセキュリティを「中」か「低」に設定しておきます。以下、ステップ 1 から 3 まであります。

Step.1

Excel 上部のメニューの ツール ≫ オプション をクリックします。

ツール > オプション をクリック。
ツール > オプション をクリック。

Step.2

表示されたオプション設定画面の、セキュリティのタブの一番下にある、マクロセキュリティ をクリックします。

セキュリティーのタブ > マクロセキュリティ をクリックします。
セキュリティーのタブ > マクロセキュリティ をクリックします。

Step.3

セキュリティレベルのタブで「中」か「低」を選択して、 OK ボタンをクリックします。低の設定は非推奨のようです。

セキュリティレベルの「中」か「低」を選択して、 OK ボタンをクリックします。
セキュリティレベルの「中」か「低」を選択して、 OK ボタンをクリックします。

Excel のセキュリティレベルを「中」に設定した後に、 Excel のファイルを開こうとした時に、以下のような警告画面が表示されます。その開こうとしている Excel のファイルでマクロを実行したい場合は、「マクロを有効にするボタン」をクリックします。

ここで、ひとつ重要なことがありまして、自分が作成したものではない Excel のファイルを開く時は注意が必要です。マクロを有効にするボタンをクリックした瞬間に意図しないマクロが実行されてしまう危険があるようです。

Excel のマクロはパソコン上のフォルダ、ファイル、その他の重要な部分も操作できてしまいますのでご注意ください。

セキュリティ警告は、マクロを有効にするを選択する。
セキュリティ警告は、マクロを有効にするを選択する。

目次まで戻る

1 の方法でマクロを作成

まずは、マクロの作成方法 1 の「ユーザー(自分)の操作を記録する」方法で作成してみます。以下、ステップ 1 から 8 まであります。

Step.1

はじめに、 Excel を起動します。

Excel を起動しました。
Excel を起動しました。

Step.2

次に、 Excel の上部のメニューの ツール ≫ マクロ ≫ 新しいマクロの記録 をクリックします。

Excel 上部のメニューの ツール > マクロ > 新しいマクロの記録 をクリックします。
Excel 上部のメニューの ツール > マクロ > 新しいマクロの記録 をクリックします。

Step.3

そうすると、以下のダイアログボックスが表示されますので、条件設定をして OK ボタンをクリックします。

マクロの記録の条件設定を行い OK ボタンをクリックします
マクロの記録の条件設定を行い OK ボタンをクリックします

各項目の説明です。

  1. マクロ名を設定します。初期値は Macro1 でした。今回は初期値のままやってみます。 1 文字目は普通の文字、 2 文字目以降は、普通の文字、アンダーバー( _ の記号)が使用できるようです。普通の文字には、日本語も使えるようです。
  2. ショートカットキーを設定します。初期値は空白でした。
    今回は Ctrl + Shift + Q でやってみます。すでに設定されている Excel のショートカットキーとマクロのショートカットキーが同一の場合は、 Excel のショートカットキーが無効化されるようです。
    • Ctrl + の右側の入力欄に q (キュー)を入力すると、 Ctrl + q で今回記録するマクロを実行できます。
    • Shift キーを押しながら Q を入力すると、 Ctrl + Shift + Q で今回記録するマクロを実行できます。
  3. マクロの保存先を設定します。以下の 3 種類から選べます。初期値は作業中のブックでした。今回は初期値のままやってみます。
    1. 個人用マクロブック
    2. 新しいブック
    3. 作業中のブック
  4. 説明を設定します。初期値はマクロ記録日とユーザー名でした。今回は初期値のままやってみます。

そうすると、以下の記録終了ツールバーが表示されます。記録終了ボタンを押すまで、 Excel の操作が記録されます。 Excel の操作を記録中の状態になっています。

記録終了ボタンを押すまで Excel の操作が記録されます。
記録終了ボタンを押すまで Excel の操作が記録されます。

Step.4

Excel の操作を行ってみます。今回は、 A 列に 1 から 10 までの連番の数字を入力してみます。

A 列に 1 から 10 までの数字を入力しました。
A 列に 1 から 10 までの数字を入力しました。

Step.5

入力し終わったところで、記録終了ツールバーの記録終了ボタンをクリックします。マクロの記録が完了します。

記録終了ボタンを押すと、マクロの記録が終了し、自動的に作業中のブックに保存されます。
記録終了ボタンを押すと、マクロの記録が終了し、自動的に作業中のブックに保存されます。

Step.6

次は、記録したマクロを確認してみます。 Excel 上部のメニューの ツール ≫ マクロ ≫ Visual Basic Editor をクリックします。 Alt + F11 のキーボードショートカットキーでも同じ動作になるようです。
Visual Basic Editor は、 Excel 上で動くアプリケーションで、マクロの編集、削除などの管理を行うことができるようです。

Alt + F11 キーでも起動するようです。
Alt + F11 キーでも起動するようです。

そうすると、 Excel とは別のウィンドウで以下の画面が表示されます。これが、 Visual Basic Editor というアプリケーションです。 VBAProject ≫ 標準モジュール ≫ Module1 の中に Macro1 という名前でマクロが保存されています。さきほど行った Excel の操作が Excel VBA のソースコードとして記録されています。

エクセルの操作結果が VBA のコードになっています。
エクセルの操作結果が VBA のコードになっています。

Step.7

次は、作成したマクロを実行してみます。その前に、マクロの実行結果がわかりやすいようにセルの内容を消去しておきます。

マクロの実行結果がわかりやすいように、セルの内容を消去しておきます。
マクロの実行結果がわかりやすいように、セルの内容を消去しておきます。

Step.8

Excel 上部のメニューの ツール ≫ マクロ ≫ マクロ をクリックするか、 Alt + F8 のキーボードショートカットを実行します。

ツール > マクロ > マクロ をクリックする。
ツール > マクロ > マクロ をクリックする。

そうすると、以下の画面が表示されるので、 Macro1 を選択して実行ボタンをクリックします。

Macro1 を選択して、実行ボタンをクリックします。
Macro1 を選択して、実行ボタンをクリックします。

マクロが実行されて、 Excel 上で行った操作が再現されます。ワークシートの A 列に 1 から 10 までの連番の数字が入力されました。

A 列に 1 から 10 までの数字が入力されました。
A 列に 1 から 10 までの数字が入力されました。

マクロの実行は、ステップ 3 で設定しておいたショートカットキーからも行うことができるようです。今回の場合は、 Ctrl + Shift + Q で設定しておいたので、 Ctrl + Shift + Q で Macro1 が実行できます。

目次まで戻る

2 の方法でマクロを作成

次は、マクロの作成方法 2 の「 Excel VBA のソースコードを書く」方法でマクロを作成してみます。以下、ステップ 1 から 6 まであります。

Step.1

はじめに、 Excel を起動します。

Excel を起動しました。
Excel を起動しました。

Step.2

次に、 Excel 上部のメニューの ツール ≫ マクロ ≫ Visual Basic Editor をクリックします。 Alt + F11 のキーボードショートカットキーでも同じ動作になるようです。

ツール > マクロ > VisualBasicEditer をクリックする。
ツール > マクロ > VisualBasicEditer をクリックする。

Step.3

そうすると、 Visual Basic Editor が起動します。 Visual Basic Editor の上部のメニューの 挿入 ≫ 標準モジュール をクリックします。

001784-insert-standard-modu
上部のメニューの 挿入 ≫ 標準モジュール をクリック。

別の方法として、下の画像のプロジェクトエクスプローラーの画面の余白の部分で、マウスを右クリック ≫ 挿入 ≫ 標準モジュール でも作成できるようです。

Module を作成する別の方法です。
Module を作成する別の方法です。

標準モジュールフォルダの中に、 Module1 が作成されます。その右側の画面に VBA のソースコードを書いていきます。 Module1 をダブルクリックすると、 Module1 の中身を表示できます。

001784-module-created
Module1 が作成されています。右側の空白の画面に VBA のソースコードを書いていきます。

Step.4

それでは、実際に VBA のソースコードを書いていきたいと思います。今回は、ワークシートの A 列に 1 から 10 までの連番の数字を入力するマクロを作りたいのですが、動作、目的は同じでも、ソースコードの書き方は作成者によってちがってくると思います。

以下に、いくつかのソースコードのパターンを書いてみたいと思います。

パターン 1.

最初の例は、 For ... Next ステートメント( statement )と Cells プロパティ( property )の組み合わせです。ステートメントという英語の意味を検索して調べてみると、「言説」「明文」「声明」というような意味ももっているようです。

プロパティの意味も調べてみると「性質」「財産」という意味ももっているようです。ステートメントは大まかな枠組みの部分で使用されていて、プロパティはより個別的な設定を決めるものかと思っています。

以下のソースコードの中の背景が緑色に塗られている部分は、私が自由に設定している文字になります。「連番入力」を「数字入力」に変えたり、「R」を「行」に変えたりできます。

その他の Sub , Dim , For Next などの文字は、 VBA の仕様というか、それを書くことで、そのように解釈して機能してくれる部品のようなものです。「Sub」から「End Sub」までをひとつのマクロとして解釈して、その間にある、命令を実行してくれます。

「For」と「Next」を書いて、その間に命令を書けば、「For」と「Next」の間にある命令を繰り返し実行してくれます。

VBA コード

Sub 連番入力()

Dim R As Long

For R = 1 To 10 Step 1

Cells(R, 1).Value = R

Next

End Sub

VBA コード(説明コメント付き)

Sub 連番入力() 'Sub ステートメントというものです。マクロのはじまりです。

Dim R As Long 'Dim ステートメントというものです。 As の後の Long は長整数型というデータ型を指定している意味になるようです。変数 R の中に -2,147,483,648 ~ 2,147,483,647 の値を入れることができるようになるようです。

For R = 1 To 10 Step 1 'For...Next ステートメントというものです。 Next までの間の命令を繰り返します。 R が 1 から 10 までステップ 1 ずつカウントアップされていきます。

Cells(R, 1).Value = R 'Value プロパティというものです。このプロパティに値を設定するとセルの値が変更されるようです。 Cells プロパティは行と列で単一のセル範囲を指定できるようです。 Cells(行番号,列番号)といった風に指定するようで、 A1 を指定する場合は、 Cells(1,1) 。 B2 を指定する場合は、 Cells(2,2) となるようです。

Next 'For からここまでの間の命令を繰り返すようです。

End Sub 'Sub ステートメントというものです。マクロのおわりです。

パターン 2.

次の例は、 For Each ... Next ステートメントと Rnage プロパティの組み合わせです。 For Each ... Next ステートメントは、同じ種類のまとまった対象をループできるようです。

今回は、 10 個のセルを対象として 1 セルずつループして新しい値を設定してみます。 Rnage プロパティは、単一のセル範囲を指定可能な Cells プロパティと違い、複数のセル範囲をまとめて指定できるようです。

今回の例では、 A1 から A10 までのセル範囲を指定しています。また今回の例では、 Range オブジェクトというものが登場します。オブジェクトの英語の意味を調べてみると「物体」という意味ももっているようです。

VBA コード

Sub 連番入力()

Dim Cnt As Long
Cnt = 1

Dim Rng As Range

For Each Rng In Range("A1:A10")

Rng.Value = Cnt
Cnt = Cnt + 1

Next

End Sub

VBA コード(説明コメント付き)

Sub 連番入力() 'Sub ステートメントというものです。マクロのはじまりです。

Dim Cnt As Long 'Dim ステートメントというものです。 As の後の Long は長整数型というデータ型を指定している意味になるようです。変数 Cnt の中に -2,147,483,648 ~ 2,147,483,647 の値を入れることができるようになるようです。 Cnt は Count の略です。
Cnt = 1 '1 ~ 10 の連番を入力したいので、初期値は 1 を設定しておきます。 For Each ... Loop ステートメントの中でこの値を 10 までカウントアップしていきます。

Dim Rng As Range 'Range オブジェクトという型を設定しています。オブジェクトは、パソコンのメモリ上に展開される物体のようなものだと思っています。それを動かしたり、それの属性を設定したりできるようです。ワークシート上に配置したオートシェイプの図形の様に独立して存在しているようです。

For Each Rng In Range("A1:A10") 'A1 から A10 まで 10 個のセルを 1 個ずつループしていきます。 Rng にはループ過程のセルが Range オブジェクトとして順にセットされていくので、その Value プロパティを設定することで新しい値を設定できるようです。

Rng.Value = Cnt 'Value プロパティというものです。このプロパティに値を設定するとセルの値が変更されるようです。上の方で設定した Cnt を新しい値として設定しています。

Cnt = Cnt + 1 'ここで Cnt を 1 増やしています。

Next 'For からここまでの間の命令を繰り返すようです。

End Sub 'Sub ステートメントというものです。マクロのおわりです。

私なりの我流ともいえる書き方ではありますが、 VBA のソースコードを 2 パターン書いてみました。マクロ名・変数名の名付け方、ステートメントの使い様など私の書き方になっているので、正解とはいえない出来上がりになっているとは思います。

Step.5

それでは、出来上がったマクロを実行してみます。

連番入力のマクロを実行してみる。
連番入力のマクロを実行してみる。

Step.6

ワークシートの A 列に 1 から 10 までの連番の数字が入力されました。

A 列に 1 から 10 までの数字が入力されました。
A 列に 1 から 10 までの数字が入力されました。

目次まで戻る

テスト環境

  • Windows 10
  • Microsoft Office Excel 2003

目次まで戻る

参考情報

VBA 言語リファレンスLanguage reference VBA | MSDN
https://msdn.microsoft.com/ja-jp/vba/vba-language-reference
Excel VBA リファレンスExcel VBA reference | MSDN
https://msdn.microsoft.com/ja-jp/vba/vba-excel

目次まで戻る

あとがき

マクロ( macro )という英語の意味を、インターネットの辞書で調べてみますと、巨大、巨視的などの意味をもつようです。内容に関しては全くわかりませんが、マクロ経済?、マクロ的な視点?とかいう言い回しをどこかで聞いたことがあるような気もします。ミクロ(小さいの意味をもつ)と対の言葉のようで、そのように扱い、視るということかと納得しました。

この macro は、今回のコンピュータのマクロとは違う分野で使われる場合の意味なのかもしれませんが、マクロ機能、 VBA を使用すれば、単一の操作だけではなく、単一の操作を複数組み合わせた包括的な処理が行えるので、マクロという名前がついているのかもしれません。私独自の解釈ですが、これもまた納得しました。

まだよくわかっていませんが、私なりの制御構造のイメージです。設計者が私です。
まだよくわかっていませんが、私なりの制御構造のイメージです。

以上、閲覧ありがとうございました。

目次まで戻る

同じカテゴリの投稿(Excel VBA)

前後の投稿