前回に続いて、エクセルマクロを記録・実行する方法を紹介します。
マクロの練習という意味で、今回はセルを移動するという作業を例題としてやってみようと思います。
「マクロの記録」はVBAのヒントを得るためのもの
VBAのプログラムを作成する際に、この後説明する「マクロの記録」という機能を利用すると便利です。「マクロの記録」をオンの状態でエクセルを操作すると、その操作が記録されて自動的にVBAとして記述されます。
一応知っておいて欲しいのですが、この「マクロの記録」でVBAは自動生成されますが、これをそのままマクロとして利用できないケースにもしばしば出くわします。従って、基本的にはこの「マクロの記録」はVBAを作成する際のヒントが得られるものと思ってもらった方が良く、自分でVBAを確認、編集する必要があります。
ともあれ、今回例題として取り扱う「セルの移動」はシンプルなので、そのままVBAを利用しても問題ありませんが。
マクロを記録する(VBAを作成する)
早速マクロを記録して、VBAを作成してみましょう。例題として「セルの移動」をVBAにしてみたいと思います(この操作自体は簡単すぎてVBAにする意味はあまりないかもしれませんが、例題です)。
画像は僕が使っているOffice for Macのものになります。Windows版とは若干アイコンの位置や操作が異なるかもしれません。
まずは、新規エクセルファイルを開いて、次の操作をします。
- A1セルに「セルA1」と入力しておく(テキストは何でも良いです)
- わかりやすくするため、A1以外のセルを選択
- 開発タブの「マクロの記録」をクリック

- ダイアログボックスで適当なマクロ名にする
デフォルトは”Macro+数字”です。必要に応じて、自分でわかりやすいマクロ名に変更します。OKを押すと記録開始。

ここからマクロが記録されます。
- A1セルを選択

- 「切り取り」をクリック(またはcommand+x)

- B1セルを選択して、ペーストをクリック


- A1セルにあったテキストがB1セルに移動

- 「記録終了」をクリック

ここまでで記録が完了。
記録されたVBAを確認する
念のため、自動生成されたVBAを確認しておきます。
- マクロアイコンをクリック

- ダイアログボックスでマクロ名を選択、「編集」ボタンを押す

編集ボタンを押すと、Visual Basic Editor(VBE)が起動します。VBAのプログラムが自動生成されているのがわかります。

テキストバージョン↓(コピペで使えます)
Sub セルA1をB1に移動()
'
' セルA1をB1に移動 Macro
'
'
Range("A1").Select
Selection.Cut
Range("B1").Select
ActiveSheet.Paste
End Sub
マクロを含むファイルの保存と保存形式(.xlsmを使う)
作成したマクロを含むファイルを保存しておきましょう。通常、エクセルファイルの拡張子は「.xlsx」(少し前のバージョン互換だと「.xls」)になっていると思いますが、この通常のファイル形式ではマクロを保存できません。
マクロを含むファイルの場合には、「マクロ有効ブック」として保存します。拡張子は「.xlsm」になります。
- 保存アイコンをクリック

- または「ファイル」から「保存」をクリック

- 保存形式を「Excelマクロ有効ブック(.xlsm)」に変更して保存

ちなみに、Excelブック(.xlsx)のまま保存しようとすると、「マクロは保存できませんよ〜」という意味のメッセージが出ます。
マクロを実行する
作成したマクロは、次の2通りの方法で利用できます。
- 保存したマクロ有効ブック内で実行して使う
- 別のエクセルファイル(.xlsxでも良い)から、マクロを呼び出して使う
2つの方法を順に説明していきます。
マクロ有効ブック(.xlsm)からマクロを実行する
まず、マクロ有効ブック内で実行する方法から説明します。
- 先ほど保存したマクロ有効ブックを開く
マクロを無効にするかメッセージが出ますが、「マクロを有効にする」を選択して下さい。

- マクロの表示アイコンをクリック
この段階で、もしA1セルにテキストが何も入力されてない場合には、図のように「テストA1」のようなテキストを入力しておいて下さい。その後に「マクロ」アイコンをクリックです。

- 実行するマクロ名を選択して、「実行」ボタンをクリック

実行すると、A1セルに入力されていたテキストがB1に移動します。これで完了。

通常のエクセルブック(.xlsx)でマクロを利用する(xlsmファイルのマクロを呼び出す)
次に通常のエクセルブック(.xlsx)から、別のマクロ有効ブック(xlsm)内のマクロを呼び出して実行する方法です。
- マクロを実行するxlsxファイルと、マクロが保存されているxlsmファイルを開いておく
まず、通常のファイル(.xlsx)を作っておきます。図ではTesx_2.xlsxというファイルを作り、A1セルに「テストその2」と入力しています。
この時、使う予定のマクロが保存されているファイル(図ではMacro1.xlsm)も同時に開いておきます。

- マクロアイコンを押してマクロを呼び出す
これまでと同様にマクロアイコンを押すとダイアログが開きます。

まず、①マクロの場所を指定します(ここではMacro1.xlsmを選択)。
そうすると、②上の白い枠内にMacro1.xlsmに含まれるマクロ名だけが表示されるので、この中から適切なマクロを選択します。
最後に、③実行ボタンをクリックします。

実行ボタンを押すと、A1セルのテキスト(テストその2)がB1セルに移動します。
まとめ
「セルの移動」を例題として、マクロを記録し(VBAが自動生成される)、このマクロを実行する方法を紹介しました。
今回は非常にシンプルな操作だったので、記録したものがそのままマクロとして正しく機能しましたが、実際には生成されたVBAをチェックして編集する作業が必要になるケースが多いと思います。
そういう意味で冒頭に
「マクロの記録」はVBAを作成する際のヒントが得られるもの
と書いたわけです。
コメント