Excel VBA入門:基礎知識と開発環境
音声
目次
VBAとは何か(マクロとの違い、できること)
今回できるようになることとして、VBAで簡単な自動化マクロを作成して実行し、保存までできるようになります。
VBA(Visual Basic for Applications)はExcelに組み込まれたプログラミング言語で、手作業の繰り返しや定型処理をコードで自動化できます。一般に「マクロ」はユーザーが実行する自動化処理の総称で、マクロを作る手段がVBAだったり、記録機能だったりします。
VBAではセルの読み書きや書式設定、条件分岐、ループ、外部ファイルや他のOfficeアプリとの連携まで行えます。最初は短いマクロから始めると分かりやすいです。
使い分けの基準として、セル指定はRange("A1")が固定参照で、Cells(行,列)は繰り返し処理で便利です。Valueは値を扱う標準で、Value2は日付や通貨の扱いで差が出る場合がありますので、特に日付の細かい扱いが必要ならValue2を試すとよいです。
最小マクロ:
' 最小サンプル:Sheet1にテストを書き込む
Sub MinimalMacro()
Dim i As Integer
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1")
For i = 1 To 5
ws.Range("A" & i).Value = "テスト " & i
Next i
MsgBox "最小マクロが実行されました。", vbInformation
End Sub
貼り付け場所:標準モジュール
VBEの起動と画面構成(プロジェクトエクスプローラ、コードウィンドウ、プロパティウィンドウ)
VBE(Visual Basic Editor)はAlt+F11キーで起動できます。
起動すると左側にプロジェクトエクスプローラがあり、開いているブックやシート、モジュールが階層表示されます。中央のコードウィンドウで実際にVBAコードを書き、下や右のプロパティウィンドウで選択オブジェクトの設定を確認できます。
プロジェクトエクスプローラでは標準モジュールやシートモジュール、ThisWorkbookの違いだけ先に押さえると迷いが減ります。標準モジュールは汎用のSubやFunctionを入れる場所で、シートモジュールはそのシート固有のイベント向けです。ThisWorkbookはブック全体のイベント向けです。
実行方法:VBEで実行(F5キーまたは実行ボタン)です。
本文中では、コードを保存する前に要チェックとしてファイルの保存形式とマクロ有効化設定を確認するとよいです。VBE内での検索(Ctrl+F)やステップ実行(F8)で動きを追いながら理解を深めます。
マクロの記録機能を使ってみる
記録機能は画面操作を自動的にVBAに変換してくれるため、初心者がVBAの出力を学ぶのに便利です。
開発タブの「マクロの記録」を押してから操作を行い、停止するとModuleにコードが生成されます。
記録されたコードはSelectやActivateを多用するため、そのまま使うより不要な行を削ってシンプルにするのが実務でのコツです。
例えば選択して太字にする手順を記録して、後で対象範囲を引数化して使えるように整形します。
記録後はコードウィンドウで名前を付け直し、コメントを入れると読みやすくなります。
確認方法:セルの値の変化や書式の反映、またはMsgBoxで処理が終わったことを表示して動作を確かめます。
以下は記録コードを整理した確認用のサンプルです(選択範囲を太字・背景色設定)。
Sub ApplyFormatToSelection()
Dim rng As Range
Set rng = Selection
If rng Is Nothing Then Exit Sub
With rng
.Font.Bold = True
.Interior.Color = RGB(230, 230, 255)
End With
MsgBox "書式を設定しました。", vbInformation
End Sub
マクロ有効ブック(.xlsm)の保存方法
マクロを含むブックは「Excel マクロ有効ブック(*.xlsm)」で保存する必要があります。通常はファイル→名前を付けて保存で保存形式を選びます。拡張子が.xlsxだとマクロが保存されないため、拡張子を確認することが重要です。
組織のセキュリティ設定により、ブックを開いたときにマクロが無効化される場合は、信頼できる場所に置くか、署名付きマクロを使う運用が一般的です。
プログラムから保存する例は以下のとおりで、配布用テンプレートを自動保存する場面で便利です。
Sub SaveAsXLSM()
Dim fPath As String
fPath = ThisWorkbook.Path
If fPath = "" Then fPath = Environ("USERPROFILE") & "\Desktop"
ThisWorkbook.SaveAs Filename:=fPath & "\マクロ付きブック.xlsm", _
FileFormat:=xlOpenXMLWorkbookMacroEnabled
MsgBox "保存しました:" & fPath & "\マクロ付きブック.xlsm", vbInformation
End Sub
よくあるミスとして、保存形式を.xlsxにしたまま終了してマクロを失ってしまうことが多いです。直し方としては、再度マクロを含む状態で開けるなら.xlsmで上書き保存し、もし上書きで失った場合はバックアップやバージョン履歴から復元するか、再作成が必要になります。社内の保存ルールに合わせてファイル名や保存先を決めると安心です。
注意(ここだけ)
最小マクロ:マクロは初回に開いたとき無効になることが多いので、信頼できる場所へ保存するか、社内の運用に従って「コンテンツの有効化」を行ってください。
要約
VBAはExcel内で動くプログラミング言語で、マクロはその自動化処理の呼び名です。
VBEはAlt+F11で起動し、プロジェクトエクスプローラ・コードウィンドウ・プロパティウィンドウを使います。
マクロ記録は学習に便利で、記録後はコードを整理して使うと効率が上がります。
マクロを保存する場合は必ず「.xlsm」で保存し、開くときはマクロの有効化方法を確認します。
最初は短いマクロを作って実行と確認(セルの変化やMsgBox)を繰り返すと習得が早まります。