👏

第7回:安全なExcel VBAアプリ運用〜セキュリティと安定性〜

に公開

1. マクロセキュリティ設定: 安全な実行環境の確立

これまで、Excel VBAの手軽さや柔軟性、そしてユーザーと共にアプリを「育てる」ことの重要性をお話ししてきました。しかし、Excel VBAアプリを運用する上で、決して忘れてはならないのがセキュリティと安定性です。特にVBAは、悪意のあるマクロが実行されると、PC内のデータが破壊されたり、情報が漏洩したりするリスクがあります。まず、最も基本的な対策は、Excelのマクロセキュリティ設定を適切に行うことです。

「警告を表示してすべてのマクロを無効にする」(推奨): これが最も一般的な設定です。信頼できる発行元のマクロや、自分で作成したマクロは「コンテンツの有効化」をクリックすることで実行できます。

「デジタル署名されたマクロを除き、すべてのマクロを無効にする」

「デジタル署名されたマクロを有効にする」

「すべてのマクロを有効にする(推奨しません。危険なコードが実行される可能性があります)」

ユーザーのPCでアプリを使ってもらう際は、信頼できる場所(ネットワークドライブや特定のフォルダ)にファイルを置き、その場所を「信頼できる場所」として設定してもらうのが安全かつ運用しやすい方法です。これにより、ユーザーは毎回警告に悩まされることなく、安全にマクロを実行できます。

2. 情報保護の配慮: データ取り扱いの注意点

業務アプリでは、顧客情報や機密性の高いデータを取り扱うことが少なくありません。VBAアプリであっても、これらの情報保護への配慮は必須です。

個人情報の扱い: 氏名、住所、電話番号などの個人情報は、安易にシート上に直接表示したり、不特定多数がアクセスできる場所に保存したりしないようにしましょう。必要な情報だけを表示し、それ以外の機密情報はデータベースやアクセス制限された場所に保管するなどの工夫が必要です。

パスワードや認証情報: VBAコード内に直接パスワードやAPIキーなどの認証情報を書き込むのは絶対に避けてください。これらが漏洩すると、不正アクセスなどの重大なセキュリティ事故に繋がります。可能であれば、外部ファイルからの読み込みや、よりセキュアな認証メカニズムの利用を検討しましょう。

アクセス権限: Excelファイル自体にパスワードを設定したり、共有フォルダのアクセス権限を適切に設定したりすることで、不必要なユーザーからのアクセスを防ぎます。

3. 予期せぬ動作対策: バックアップと堅牢なコード

アプリが予期せぬ動作を起こしたり、ファイルが破損したりするリスクも考慮しなければなりません。

定期的なバックアップ: VBAアプリのExcelファイルは、必ず定期的にバックアップを取る習慣をつけましょう。ユーザーが誤って上書きしたり、PCのトラブルでファイルが破損したりした場合でも、すぐに復旧できるようにしておくことが重要です。可能であれば、自動バックアップの仕組みをVBAで組み込むのも有効です。

堅牢なコード: 第4回でも触れましたが、エラーハンドリングをしっかり組み込むことで、予期せぬエラーでアプリが停止するのを防ぎます。また、ユーザーが入力するデータについては、型チェックや範囲チェックを徹底し、不正なデータが処理されるのを防ぎましょう。

シート保護とセルロック: ユーザーに誤って数式やVBAの参照セルを消されたり変更されたりしないよう、シート保護やセルのロック機能を活用しましょう。必要な入力箇所だけ保護を解除することで、誤操作によるトラブルを未然に防ぎます。

4. コード保護の検討: パスワード設定の是非

VBAプロジェクトにはパスワードを設定し、コードを保護することができます。これは、コードが改ざんされるのを防いだり、ユーザーにコードを見られたくない場合に有効です。しかし、このパスワード設定には賛否両論があります。

メリット:

コードの改ざん防止。

知的財産の保護(コードの流出防止)。

ユーザーが誤ってコードを編集してしまうのを防ぐ。

デメリット:

パスワードを忘れると、誰もコードを編集できなくなる。

メンテナンス性が低下する(パスワード解除の手間)。

ユーザーが簡単な修正を自分で行う、というVBAのメリットが失われる。

一人情シスとして「ユーザーを開発者に」という視点を持つのであれば、安易なパスワード設定は避けるべきかもしれません。本当に保護すべきコードと、ユーザーが触っても問題ない部分を区別し、必要に応じて部分的な保護を検討するなど、バランスの取れた判断が求められます。

5. 安定稼働の設計: リスクを減らすコーディング

最後に、VBAアプリが安定して稼働し続けるための設計思想についてです。

外部依存の最小化: 外部ファイルやネットワークへの依存を最小限に抑えることで、それらのトラブルがアプリ全体に影響するリスクを減らします。

シンプルな設計: 複雑な機能はエラーの温床になりがちです。できるだけシンプルで分かりやすいコード、機能設計を心がけましょう。

テストの実施: 新しい機能を追加したり、既存の機能を修正したりした際は、必ずテストを行い、意図した通りに動作するか、他の機能に影響がないかを確認しましょう。

Excel VBAアプリは、手軽に作れる反面、その運用には細やかな配慮が必要です。しかし、これらのセキュリティと安定性の対策を講じることで、ユーザーは安心してアプリを利用でき、一人情シスとしての信頼も高まります。

今日の言いたいこと: 手軽さの裏にあるリスクを理解し、**「安全」と「安定」**を意識したVBAアプリを運用しよう。

Discussion