Excel VBA | 超初心者(Excel操作+マクロ体験):VBA基礎環境 – マクロの保存形式(xlsm)

Excel VBA VBA
スポンサーリンク

Excel VBAって何?超初心者向けのイメージづくり

Excel VBA は「Excelを自動で動かすための言語」です。
正式名称は Visual Basic for Applications。難しく聞こえますが、やっていることは「Excelの作業手順を言葉で書いておく」だけです。

毎回、同じような操作をしている場面を思い出してみてください。
毎月の売上表をコピーして、並べ替えて、合計を出して、別シートに貼る――こういう作業を、VBAで「手順」として書いておくと、ボタン一つで一気に終わるようになります。

人間の言葉にすると、こんな関係です。

VBA = 「Excelに対する命令の言語」
マクロ = 「その命令をまとめたレシピ(手順書)」

「プログラミング」と聞くと構えてしまいがちですが、Excel VBAは次の点でかなり優しめです。

Excelの画面を見ながら試せる
一行だけの命令から始められる
「うまくいったかどうか」がすぐ目で見て分かる

だから、プログラミング超初心者の入口としては、かなり良い選択肢です。

VBA基礎環境を整える

開発タブを出す理由と意味

VBAを書くためには、「開発」タブが必要です。
これは、Excelに隠れている「プログラミング用のスイッチ」を表に出す作業だと思ってください。

開発タブがない状態だと、VBAの画面(VBE)に行く入口がありません。
なので、最初に一度だけ設定しておきます。

手順のイメージはこうです。

Excelの左上の「ファイル」を押す
「オプション」を開く
「リボンのユーザー設定」を選ぶ
右側の一覧から「開発」にチェックを入れて「OK」を押す

これで、リボンに「開発」というタブが追加されます。
ここが、VBAの世界への玄関です。

VBE(VBAの編集画面)を開く

VBAのコードは、シートのセルの中には書きません。
専用の編集画面「VBE(Visual Basic Editor)」で書きます。

開き方は二通りあります。

キーボードで Alt+F11 を押す
開発タブの「Visual Basic」ボタンをクリックする

どちらでも同じ画面が開きます。
左側に「VBAProject(ブック名)」、右側に真っ白なコードを書くスペースが出ていればOKです。

モジュールを挿入する意味

VBAのコードは「モジュール」という箱の中に入れて管理します。
一つのモジュールの中に、複数のマクロ(Subプロシージャ)を書いていくイメージです。

VBEの上のメニューから「挿入」→「標準モジュール」を選ぶと、左側に「Module1」が増え、右側に真っ白なコード画面が出ます。
ここが、あなたのコードを書くキャンバスになります。

マクロの保存形式(xlsm)を理解する

ここが今日の一番の重要ポイントです。
「分かったつもり」で進むと、後で痛い目を見るところなので、少し深くいきます。

xlsx と xlsm の違いを感覚でつかむ

Excelファイルには、代表的に二つの拡張子があります。

〇〇.xlsx
〇〇.xlsm

見た目はほとんど同じですが、中身のルールが決定的に違います。

xlsx:普通のExcelファイル。マクロ(VBA)は保存できない
xlsm:マクロを保存できる「マクロ有効ブック」

つまり、マクロを使いたいなら、必ず xlsm で保存する必要があります。
もし xlsx のまま保存すると、せっかく書いたVBAコードがファイルに残りません。

ここは本当に重要なので、言い方を変えてもう一度。

マクロを書いたのに、ファイルを xlsx で保存すると、
「マクロはファイルの外に置き去りにされて、次に開いたときには消えている」
という状態になります。

なぜ「マクロ有効ブック」という形式が分かれているのか

これはセキュリティのためです。

Excelはこう考えています。

普通のファイル(xlsx)には、危険なプログラム(マクロ)は入れさせない
マクロを入れたいなら、「このファイルはマクロを使う特別なファイルです」と宣言してもらう

その「宣言」が、拡張子 xlsm です。

言い換えると、

xlsx = 「データだけの安全なファイル」
xlsm = 「中にプログラム(マクロ)が入る可能性があるファイル」

という区別です。

だから、Excelは xlsm を開いたときに、よくこう聞いてきます。

「このブックにはマクロが含まれているかもしれません。実行してもいいですか?」

これは、あなたを守るための確認です。

実際に xlsm で保存してみる流れ

超初心者向けに、実際の操作のイメージを順番に書きます。

Excelで新しいブックを開く
左上の「ファイル」→「名前を付けて保存」を選ぶ
保存先を選ぶ画面で、「ファイルの種類」をクリックする
一覧から「Excel マクロ有効ブック(*.xlsm)」を選ぶ
ファイル名を「VBA練習.xlsm」などにして「保存」を押す

これで、そのファイルは「マクロを保存できるブック」になります。
以後、このファイルの中で書いたVBAコードは、ちゃんとファイルに保存されます。

xlsm を開いたときの「コンテンツの有効化」

マクロ有効ブック(xlsm)を開くと、画面の上の方に黄色い帯で

「セキュリティの警告:マクロが無効にされました」
「コンテンツの有効化」

のようなメッセージが出ることがあります。

これは、Excelがこう言っている状態です。

「このファイルにはマクロが入っているかもしれないけど、本当に動かしていい?」

自分で作ったファイルなら、「コンテンツの有効化」を押して問題ありません。
他人からもらったファイルの場合は、信頼できる相手かどうかを確認してからにする、というのが基本的な考え方です。

ここで「有効化」を押さないと、マクロは存在していても実行されません。
「マクロを書いたのに動かない」というとき、実はこの有効化を忘れているだけ、ということもよくあります。

超シンプルなマクロを書いて、xlsm に保存してみる

例題1:メッセージを出すだけのマクロ

まずは、動作が分かりやすい「メッセージボックス」を出すマクロを書いてみます。

先ほど作った「VBA練習.xlsm」を開き、次の手順で進めます。

Alt+F11 でVBEを開く
「挿入」→「標準モジュール」で Module1 を作る
右側の白い画面に、次のコードを書きます

Sub あいさつ()

    MsgBox "こんにちは!VBAの練習中です"

End Sub
VB

これで、人生初のマクロが完成です。

コードの意味を一行ずつかみ砕く

Sub あいさつ()

マクロのスタートを表すキーワードが Sub です。
その後ろの「あいさつ」はマクロの名前で、あなたが自由に決めて構いません(日本語でもOK)。
「この名前のマクロを実行するよ」というラベルだと思ってください。

MsgBox “こんにちは!VBAの練習中です”

MsgBox は「メッセージボックスを表示して」という命令です。
ダブルクォーテーション ” ” で囲まれた部分が、実際に画面に表示される文字です。

End Sub

「このマクロはここで終わりです」という区切りです。
Sub ~ End Sub の間に、命令を並べていく、という構造になります。

マクロを実行してみる

VBEの画面で、カーソルを Sub あいさつ() のどこかに置き、F5キーを押します。
すると、Excel側に戻って、メッセージボックスがポンと表示されるはずです。

「こんにちは!VBAの練習中です」と出たら成功です。

ここで一度、ファイルを上書き保存してみてください。
このとき、タイトルバーに「VBA練習.xlsm」と表示されていることを確認します。

もしここで xlsx 形式にしてしまうと、今書いたマクロはファイルに残りません。
これが「保存形式(xlsm)が超重要」と言った理由です。

例題2:セルに文字を書き込むマクロ

次は、Excelらしい動きとして「セルに文字を書き込む」マクロを作ります。

同じ Module1 に、次のコードを追加してみてください。

Sub セルに書き込む()

    Range("A1").Value = "VBAで書き込みました"

End Sub
VB

コードの意味

Range(“A1”).Value = “VBAで書き込みました”

Range(“A1”) は「A1セル」という意味です。
.Value は「そのセルの中身(値)」を指します。
= は「~にする」という代入の記号です。
“VBAで書き込みました” が、実際にセルに入る文字列です。

日本語にすると、

「A1セルの値を『VBAで書き込みました』にしなさい」

という命令になります。

実行して結果を確認する

Sub セルに書き込む() の中にカーソルを置き、F5キーを押します。
Excelのシートに戻って A1 セルを見ると、「VBAで書き込みました」と入っているはずです。

ここでもう一度、上書き保存をします。
このときも、形式が xlsm のままになっていることがとても大事です。

xlsm を使うときに絶対に押さえておきたいポイント

ポイント1:最初に「このファイルはVBA用」と決めておく

VBAの練習をするときは、最初に必ず「マクロ有効ブック(xlsm)」として保存してから書き始める、という習慣をつけると安全です。

新規ブックを開く
すぐに「名前を付けて保存」で xlsm を選ぶ
その後で、VBAを書き始める

この順番にしておくと、「マクロを書いたのに消えた…」という悲劇をほぼ防げます。

ポイント2:拡張子を変えるときの注意

もし、マクロが要らない状態のファイルとして誰かに渡したい場合、xlsm から xlsx に変えて保存することもできます。
ただし、その場合は「マクロは全部消えてもいい」と覚悟したうえで行う必要があります。

xlsx にすると、マクロはファイルに保存されません。
「マクロ付きの版」と「マクロなしの版」を分けたいなら、

VBA付き:VBA練習マクロ有り.xlsm
マクロなし:VBA練習
マクロ無し.xlsx

のように、別名で保存して使い分けるのがおすすめです。

ポイント3:xlsm は「データ+プログラム」のセット

感覚的には、こう覚えると分かりやすいです。

xlsx = 料理だけ(データだけ)
xlsm = 料理+レシピ(データ+マクロ)

マクロ有効ブックは、「このファイルを開くと、データだけでなく、動くレシピも一緒に付いてくる」状態です。
だからこそ、Excelは開いたときに「このレシピ、本当に動かしていい?」と確認してくるわけです。

まとめと、次の一歩

今日の内容の整理

今日のテーマを、超初心者目線で整理するとこうなります。

Excel VBA は、Excelを自動で動かすための言語
VBAを書くには、「開発タブ」と「VBE」と「モジュール」が必要
マクロを保存するには、必ず「マクロ有効ブック(xlsm)」で保存する
xlsm は「マクロを含めることができる特別なファイル形式」で、xlsx とは役割が違う
簡単なマクロ(メッセージ表示・セルへの書き込み)から始めると、動きがイメージしやすい

ここまで理解できていれば、もう「超初心者」から一歩抜け出しています。

次にやってみてほしい小さな練習

あいさつマクロのメッセージを、自分の名前入りに変えてみる。

MsgBox "こんにちは、山田さん!VBAの世界へようこそ"
VB

セルに書き込む場所を変えてみる。

Range("B3").Value = "ここはB3セルです"
VB

複数のセルに書き込むマクロを作ってみる。

Sub 複数セルに書き込む()

    Range("A1").Value = "上段左"
    Range("B1").Value = "上段右"
    Range("A2").Value = "下段左"
    Range("B2").Value = "下段右"

End Sub
VB

こういう小さな「いじってみる」を繰り返すと、
VBAの文法そのものよりも、「Excelをコードで動かす感覚」が自然と身についてきます。

タイトルとURLをコピーしました