🚀連載第1回！初心者のためのExcel VBA入門：基礎知識とセキュリティ設定

# Excel VBAの基礎知識とセキュリティ設定

私は`Next.js`と`tailwindcss`を使用し、フロントエンド開発を行っている初心者です。最近、久しぶりにVBAを触る機会があり、多くの基本的な設定や概念を思い出す必要がありました。他の言語の知識と混同したり、忘れている部分も多かったため、この機会に基礎知識を整理し、初心者の方々の参考になればと思い、記事としてまとめることにしました。
この記事は、Excel VBAの連載記事の第1回目です。今回は、VBAの基礎知識とセキュリティ設定に焦点を当てています。なお、具体的なVBAコードの書き方については次回以降で詳しく解説していく予定です。まずは、VBAを使用するための基礎知識とセキュリティについて解説します。

- 第1回: Excel VBAの基礎知識とセキュリティ設定（本記事）
- [第2回: Excel VBAの基本操作とオブジェクトの理解](https://qiita.com/CodeLeaf/items/c65d2531908aaf53649d)
- [第3回: Excel VBAにおける変数と定数の基本](https://qiita.com/CodeLeaf/items/3b36eddf7b5a8b5c5d99)
- [第4回: Excel VBAにおけるシート操作の基本とエラー処理](https://qiita.com/CodeLeaf/items/573fb7c61a756aa123ea)
- [第5回: Excel VBAにおける条件分岐](https://qiita.com/CodeLeaf/items/8be52d682baa097a65c1)
- [第6回: Excel VBAにおける繰り返し処理の基本](https://qiita.com/CodeLeaf/items/5bc6c961a090e550bca9)
- [第7回: Excel VBAにおける配列とFor Eachの活用](https://qiita.com/CodeLeaf/items/bdd8d488e49086219663)
- [第8回: Excel VBAにおけるFormulaとValueの使い分けとユーザー入力の取得](https://qiita.com/CodeLeaf/items/ecf312a53f7ede91bce9)
- [第9回: Excel VBAにおけるファイル操作とフォルダ管理の基本](https://qiita.com/CodeLeaf/items/e5520321e760364f6aae)
- [第10回: Excel VBAにおけるFileSystemObjectを活用した高度なファイル操作](https://qiita.com/CodeLeaf/items/a78e9c7dd2b7e68f1d9e)
- [第11回: Excel VBAにおけるFileSystemObjectを活用した高度なファイル操作 応用編](https://qiita.com/CodeLeaf/items/4607db0151dddfb7f458)
- [第12回: Excel VBAにおけるStrConv関数の活用と応用テクニック](https://qiita.com/CodeLeaf/items/4f6358548bced6c047e0)
- [第13回: Excel VBAにおけるワークブックの安全な操作と管理テクニック](https://qiita.com/CodeLeaf/items/cf136898dd41c7dd5d9f)
- [第14回: Excel VBAにおけるFunction（関数）の作成と活用テクニック](https://qiita.com/CodeLeaf/items/a299f465bdcb1957e2be)
- [第15回: Excel VBAにおける配列を返す関数の作成と活用テクニック](https://qiita.com/CodeLeaf/items/711a93ac86b5c4150e13)
- [第16回: Excel VBAにおけるコレクションの活用と応用テクニック](https://qiita.com/CodeLeaf/items/6a28c65d5f8d19964664)
- [第17回: Excel VBAにおける辞書型（Dictionary）の活用と応用テクニック](https://qiita.com/CodeLeaf/items/5f85b2029e8d51eaa788)
- [第18回: Excel VBAにおけるEnum型を活用した関数設計と実装テクニック](https://qiita.com/CodeLeaf/items/3e91ef9556799d96aeea)
- [第19回: Excel VBAにおけるユーティリティ関数の作成と活用テクニック](https://qiita.com/CodeLeaf/items/bc156b6a9cadd7b10601)
- [第20回: Excel VBAにおける正規表現を活用したファイル名解析テクニック](https://qiita.com/CodeLeaf/items/86284498dee42aab731e)

## 目次
[はじめに](#はじめに)
[マクロとは](#マクロとは)
[VBA（Visual Basic for Applications）とは](#vbavisual-basic-for-applicationsとは)
[マクロとVBAの違い](#マクロとvbaの違い)
[VBE（Visual Basic Editor）とは](#vbevisual-basic-editorとは)
[VBA開発環境の準備](#vba開発環境の準備)
[VBEの配色設定をregファイルでバックアップ・復元](#vbeの配色設定をregファイルでバックアップ復元)
[安全なマクロ利用法](#安全なマクロ利用法)
[まとめ](#まとめ)

## はじめに
VBA（Visual Basic for Applications）は、Office製品での自動化スクリプトを作成するための強力なツールです。繰り返し作業や煩雑な転記処理など、データ処理の自動化に広く活用され、業務効率を大幅に向上させています。
しかし、VBAの利用にはセキュリティ面の考慮が不可欠です。特にマクロを有効にすることによりウイルス感染のリスクを伴う可能性があるため、適切なセキュリティ設定を行うことが重要です。

## マクロとは
マクロは、Office製品に標準装備されている機能で、日常的な作業や複雑な処理を自動化するための強力な機能です。具体的には、データの入力、加工などの一連の操作手順を記録し、ボタン一つで実行できるようにするものです。

### セキュリティ上の注意点
セキュリティ面では、マクロが悪用されるリスクが存在します。悪意を持った人がウイルスを含んだExcelデータなどを有益な情報のように偽装し、インターネット上に公開することがあります。悪意のあるユーザーが作成したマクロを実行してしまうと、意図しない動作を引き起こし、ウイルス感染や情報漏洩などの深刻な事態に発展する可能性があります。

### 安全な利用のために
このようなリスクに対応するため、Microsoftは以下の対策を講じています。

- デフォルトでマクロを無効化
- 信頼できる発行元の概念の導入
- セキュリティレベルの段階的な設定オプション

### 推奨される使用方法
マクロを安全に活用するためには、以下の原則を守ることが重要です。

- 信頼できる送信元からのマクロのみを実行
- 社内で承認されたマクロの使用
- 不明な送信元のファイルでのマクロ実行を避ける
- 必要に応じてデジタル署名の確認

このセキュリティ意識を持ちながらマクロを活用することで、業務効率の向上とセキュリティリスクの軽減を両立することができます。


## VBA（Visual Basic for Applications）とは

Microsoft Office アプリケーションに組み込まれているプログラミング言語です。Excel、Word、PowerPoint などの Office アプリケーションを自動化するためのマクロや、機能を拡張するためのツールを開発するために使用されます。
マクロを作成するためのプログラミング言語という認識で構いません。


:::note info

各単語の意味を理解することで、VBAの本質がわかります。

- Visual Basic
    - 1991年にマイクロソフト社によって開発・提供されたプログラミング言語
    - Windowsの機能を全般的に利用可能だが、専用の開発環境（Visual Studio等）が必要

- for Applications（アプリケーションのための）
  - Microsoft Office製品（Excel, Word, PowerPointなど）専用
  - それぞれのアプリケーションの機能を自動化できる

ざっくりまとめると、VBA は VB を簡略化したものであり、Officeアプリケーションに特化したプログラミング言語です。

### 違いのまとめ

|  | Visual Basic (VB) | Visual Basic for Applications (VBA) |
|---|---|---|
| 目的 | 独立したアプリケーション（スタンドアロンアプリケーション）の開発| Office アプリケーションの自動化、機能拡張など |
| 動作環境 | Windows | Office アプリケーション |
| 開発規模 | 大規模開発にも対応 | 比較的小規模な開発 |
:::

### 主な特徴

- Office製品で使用可能なプログラミング言語
- マクロの記録・編集が可能
- 豊富な機能とカスタマイズ性

### 最初に覚えたいVBAのショートカット

- マクロの実行：`Alt + F8`
- VBAの編集（VBE起動）：`Alt + F11`

## マクロとVBAの違い

「マクロ」と「VBA」は混同されがちですが、それぞれ異なるものを指します。

### マクロ

- ユーザーの一連の操作を記録し、自動化することができる
- 記録されたマクロは簡単な操作で実行でき、プログラミングの知識がなくても使用できる
- Officeアプリケーションを自動化等するためのツール

### VBA

- マクロを記録した後、それを編集・カスタマイズすることができるプログラミング言語
- マクロ記録の限界を超え、さらに高度なカスタマイズを行うために用いる
- Excelだけでなく、WordやAccessなど他のOfficeアプリケーションでも使用可能

ユーザーがExcelでマクロを記録すると、その裏側ではVBAコードが生成されています。簡単なタスクであれば、マクロだけで十分ですが、複雑な条件分岐や繰り返し処理が必要な場合には、VBAを使って直接コードを編集することで、より強力な自動化を実現できます。つまり、**VBAを使ってマクロを作成する**という関係になります。


## VBE（Visual Basic Editor）とは

VBAを編集するためのエディタです。

:::note info
以下、各単語の意味です。

- Visual Basic
  - 前述参照

- Editor（編集ツール:文字や記号を入力・編集するためのソフトウェア）
  - コードを書いたり修正したりするための専用ツール
  - 入力補完や色分け表示などの編集支援機能がある
  例：入力の途中で候補を表示する、文法によって文字の色を変えるなど
:::


## VBA開発環境の準備
### 開発タブの表示

1. Excelを起動
2. [ファイル] > [オプション] > [リボンのユーザー設定]
3. 右側のリストで[開発] にチェックを入れる
4. [OK]をクリックして設定を保存

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3818373/5b106136-8575-8a57-1957-dc99a1323e57.png)

### VBEの基本設定

1. [開発] タブから [Visual Basic] をクリック
（ショートカット: `Alt + F11`）
2. [ツール] > [オプション]

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3818373/869ccb6b-f30f-32c5-ca40-c40d6ca62ced.png)



3. [編集] > [自動構文チェック] のチェックを**外す**
※ エラーのダイアログが煩わしいため（表示色でエラーを把握）
4. [編集] > [変数の宣言を強制する] にチェックを**入れる**
※ データの種類を明確にすることで、予期せぬエラーを防ぎ、コードの信頼性と保守性が向上する

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3818373/b90618ef-60aa-cf0c-3f91-36579c135882.png)


5. [エディターの設定] > 以下の推奨設定を行う
    - 標準コード： 前景/黄色、背景/黒
    - コメント： 前景/濃いグレー、背景/黒
    - キーワード： 前景/水色、背景/黒
    - 識別子： 前景/白、背景/黒
    - フォント名: Meiryo UI(日本語）
    - サイズ: 10
    
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3818373/016f35d2-2efb-531e-bc1a-d8fe1ea3fa66.png)

6. [表示] > [ツールバー] > [編集]にチェックを入れ、ドラッグで添付画像の位置に移動

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3818373/1b547c39-4540-91e2-f7d2-e49416d6d30c.png)

:::note info
上記のVBEの基本設定は、書籍「ExcelVBAを実務で使い倒す技術（著者: 高橋宣成 / 出版社: 秀和システム / 発売日: 2017/4/20）」を参考にしております。

実務で役立つノウハウがまとめられております。
VBA初心者から抜け出したい方、中級者の方におすすめの一冊です。

[Amazonで書籍をチェック](https://www.amazon.co.jp/ExcelVBA%E3%82%92%E5%AE%9F%E5%8B%99%E3%81%A7%E4%BD%BF%E3%81%84%E5%80%92%E3%81%99%E6%8A%80%E8%A1%93-%E9%AB%98%E6%A9%8B%E5%AE%A3%E6%88%90/dp/4798049999/ref=sr_1_1?adgrpid=53054390133&dib=eyJ2IjoiMSJ9.ABNlNIm3YIT5nQmmkQedXYACUc0MZnMq602t_lqs1t8q2xFewfy4FjhD9oz5fqcO9bG62y90ExW7WSPji3-ohnOWqDN12Oo34qSL-6DwtNt2FMcYLTzjXKkBLRgdgjVkZumCsrMvjUnH7A1mOMLH1opqLjgsbmld9nHn2dPRbC0_eHgx11tdXdI6HBVwh5M7N2qQSDIL-mfOzmWJliqAVA.KZUVvhggTNHldz2tRQATyCWYpjXy8baSNX_2YHe9NjA&dib_tag=se&hvadid=679074332153&hvdev=c&hvlocphy=9157614&hvnetw=g&hvqmt=e&hvrand=10205372873041421575&hvtargid=kwd-300932972370&hydadcr=27271_14738618&jp-ad-ap=0&keywords=excel+vba%E3%82%92%E5%AE%9F%E5%8B%99%E3%81%A7%E4%BD%BF%E3%81%84%E5%80%92%E3%81%99%E6%8A%80%E8%A1%93&mcid=60311ef47aee30859e336aba0d977702&qid=1738735670&sr=8-1)
:::

## VBEの配色設定をregファイルでバックアップ・復元

上述のように、VBEで使用するコードの配色設定を、自分好みにカスタマイズすることができます。これらの設定はWindowsのレジストリに保存されています。regファイルを使ってこれらの設定をバックアップしたり、復元したりすることで、複数の配色パターンを管理しやすくなります。

### 現在の配色設定をバックアップする方法

1. `Windowsキー + R` を押して「`regedit`」と入力し、レジストリエディターを起動
    【コピぺ用】
    ```
    regedit
    ```

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3818373/b20f09b7-659f-d705-d8fb-f34e03db8c62.png)

    
2. 以下のパスに移動
    ```
    HKEY_CURRENT_USER\Software\Microsoft\VBA\7.1\Common
    ```
    ※このキーは使用中のOfficeのバージョンによって異なる（VBAのバージョンによって7.1は異なる）場合があります。

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3818373/94db0a5a-d21f-b525-b4ba-3e960abddd2b.png)
    
3. [Common]フォルダを右クリック > [エクスポート]を選択

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3818373/f41a42f6-a465-cb00-98e0-0790b8de2a14.png)


4. ファイル名を「VBE配色設定.reg」として保存
    ※ ファイル名、保存場所は任意の名前・場所で構いません
    ※ 日付を入れるなど工夫し、わかりやすい名前を付けることを推奨

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3818373/93c746a8-2566-13e0-af05-25217dcc4b19.png)


### 配色設定を復元する方法

1. バックアップしたregファイルをダブルクリック
2. 確認メッセージが表示されるので「はい」をクリック

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3818373/a109bf01-7eb5-e829-82bb-b665b95dbe19.png)

3. 「レジストリに正常に追加されました」と表示されたら完了
    ※ VBEを再起動すると設定が反映されます

### 活用方法

- 複数の配色パターンを保存し、気分や用途に応じて切り替え
- 他のPCの配色設定を手動で設定せずに、regファイルで簡単に行う
- 新しい配色を試す前に、現在の設定をバックアップ
- 設定が崩れた場合、バックアップから簡単に復元

### 注意事項

- レジストリの操作は慎重に行う
- 予期しない問題を避けるため、必ず元の配色設定をバックアップを行う
- バックアップを取る前に、VBEの配色設定を意図した状態にする
- PCの環境によってレジストリのパスが、異なる場合がある
- regファイルはテキストファイルなので、テキストエディタで開いて編集することも可能

## 安全なマクロ利用法

### デジタル署名について
デジタル署名は、マクロの作成者を証明し、内容が改ざんされていないことを保証する電子的な署名です。

#### デジタル証明書の取得方法
- 認証局と呼ばれる信頼できる第三者機関から発行
- 組織内で使用する場合は、自己署名証明書を作成
※具体的な設定方法は、認証局や組織のセキュリティポリシーによって異なるため、該当する手順に従ってください。

#### デジタル署名の確認方法

1. [開発] タブから [Visual Basic] をクリック
（ショートカット: `Alt + F11`）
2. [ツール] > [デジタル署名] をクリック
3. 署名の記載を確認

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3818373/cb0eed73-d00e-2713-08cc-d24e66c765b8.png)



### マクロが無効な状態での警告とその対応
マクロが無効化された状態でマクロ付きExcelファイルを開くと、セキュリティ警告が表示されます。信頼できるソースからのファイルの場合、下記の対応でマクロ無効解除ができます。

- セキュリティに関する通知が出た場合
下記の警告が出た場合は、「マクロを有効にする」をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3818373/95cab7c7-c2e8-1d11-3c4f-c4cabbf90f33.png)

- セキュリティの警告が出た場合

下記の警告が出た場合は、「コンテンツの有効化」をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3818373/d7351b24-5226-d52e-a320-06d6bfd219de.png)

- 同じファイルを頻繁に使用する場合

[信頼できる場所] に配置することを検討

1. Excelを起動
2. [ファイル] > [オプション] > [セキュリティセンター（or トラストセンター）] > [セキュリティセンターの設定（or トラストセンターの設定）]

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3818373/121e0542-aa8c-4996-154a-7c1ec717b314.png)


3. [信頼できる場所] > [新しい場所の追加]

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3818373/b117967c-49b4-8ed0-c75e-eb05fafbfb6f.png)

4. 参照をクリックし、フォルダを選択、[OK]をクリックして設定を保存
※「この場所のサブフォルダーも信頼する」にチェックしておけば、追加したフォルダ内すべて安全と見なされます。

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3818373/bf437140-f96e-dcdb-7268-bea233c9c526.png)

5. 参照に追加したフォルダにファイルを移動

- マクロの完全有効化したい場合

1. 前述の「同じファイルを頻繁に使用する場合」の手順1～2を行う
2. [マクロの設定] > [すべてのマクロを有効にする] にチェックを入れる
3. [OK] をクリックして設定を保存

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3818373/eabd8346-06d3-1eb3-517e-a7b410e52d19.png)

:::note warn
#### 重要な注意事項
この設定は以下のような重大なセキュリティリスクを伴います。

##### セキュリティの脆弱化

- すべてのマクロが警告なしで実行可能となる
- 悪意のあるマクロも自動的に実行される可能性がある
- 信頼できる発行元からのマクロであっても、悪意のあるコードが含まれている可能性はゼロではない

##### 推奨される代替案

- 通常は [デジタル署名された発行元からのマクロのみ有効にする] の設定を推奨
- [警告を表示してすべてのマクロを無効にする] の設定にし、実行の都度、有効化する方法が安全
- 前述の[信頼できる場所] に配置の方法で管理

セキュリティ警告は一見煩わしく感じられるかもしれませんが、重要なセキュリティ対策の一つとして機能しています。完全な無効化よりも、必要に応じた選択的な有効化を推奨します。
:::

## まとめ

VBAは、業務効率を大幅に向上させる強力なツールです。本記事では、VBAの基礎知識、セキュリティ面での重要な注意点について解説しました。VBAを活用することで、データ入力や集計作業の自動化、定型業務の効率化など、様々な業務改善が可能となります。特に、適切なセキュリティ設定とデジタル署名の活用は、安全なVBA開発の基盤となります。

もし記事の内容に間違いがあれば、コメントでご指摘いただけますと幸いです。また、より良い方法や代替手段をご存知の方がいらっしゃいましたら、ぜひ共有していただければと存じます。例えば、開発環境の設定方法、セキュリティ対策の実践例、効率的なVBA開発の手法など、皆様の知見やベストプラクティスをお聞かせいただければ大変参考になります。

次回の記事では、実際のVBAコードの書き方について解説する予定です。セルの操作に欠かせないRangeとCellsの使い分け、Valueメソッドを使ったセルへの値の代入方法、オブジェクト・プロパティ・メソッドの基本的な概念、そしてClearとDeleteの違いなどを説明します。どうぞお楽しみに！