エクセル 他の人に見られたくないシートをVBAで表示できないようにしてパスワードを設定する(Excel VBA)

【本日のミッション】

Excel 他の人に見られたくないシートをVBAで表示できないようにして、VBA画面を見られないようにパスワードを設定せよ。

ミッションの概要

他の人に見られたくないシートをVBAで表示できないようにして、VBA画面を見られないようにパスワードを設定せよ、というのが今回のミッションです。

個人情報の入ったシート、マスタデータの入ったシート等、他の人に見られたくないワークシートをVBAで非表示にして、ユーザーが手作業で再表示できないようにします。

今回は、<マスタ非表示><マスタ表示>ボタンを用いて、マスタシートの表示の切り替えを行います。マスタシート表示時には、パスワードの入力を求めるようにします。


↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
<マスタ非表示>ボタンで、マスタシートが非表示になるようにします。

<マスタ表示>ボタンでマスタシートを表示しますが、パスワードを入力しないと再表示できないようにします。

プロシージャとボタンの設定

Sub マスタシート非表示()

    Worksheets("マスタ").Visible = xlSheetVeryHidden

End Sub

Sub マスタシート表示()

    Dim res As String
    
    res = InputBox("マスタシートを表示するパスワードを入力してください。")
    
    If res = "pass" Then    ’←自分で設定したパスワード
        Worksheets("マスタ").Visible = xlSheetVisible
    Else
        MsgBox "パスワードが違います。"
    End If

End Sub

任意のシートに、<マスタ非表示><マスタ表示>オブジェクトを作り、ボタンとして使用します。
<マスタ非表示>オブジェクトを右クリックし、[マクロの登録]をクリックします。

マクロの登録画面にて、「マスタシート非表示」マクロを選択して、<OK>ボタンをクリックします。

<マスタ表示>ボタンには「マスタシート表示」マクロを設定します。

<マスタ非表示>ボタンをクリックすると、マスタシートが非表示になります。手動でシートを表示しようとしても、「再表示」の表示がグレーになっていて再表示することはできません。

<マスタ表示>ボタンをクリックすると、パスワード入力画面が表示されます。

正しいパスワード「pass」を入力すると、マスタシートは表示されます。
間違ったパスワードを入力すると、下記メッセージが表示されます。

Visibleプロパティ

定数説明
Trueシートを表示します。
Falseシートを非表示にします。 ユーザー側でシートの再表示が可能です。

Visibleプロパティには、下記組み込み定数もあります。今回はこちらの定数を利用しています。

定数説明
xlSheetVisibleシートを表示します。
xlSheetHiddenシートを非表示にします。 ユーザー側でシートの再表示が可能です。
xlSheetVeryHiddenシートを非表示にします。 ユーザー側でシートの再表示不可です。

定数「xlSheetVeryHidden」を利用すると、ユーザー側での再表示ができなくなります。

Worksheets("マスタ").Visible = xlSheetVeryHidden

この設定は、VBE画面のシートのVisibleプロパティでも可能です。

■■■スポンサーリンク■■■

VBAにパスワードを設定する

VBAで設定したコードをユーザーに見られないようにするために、VBAにパスワードを設定します。

Visual Basic Editorを開き、[ツール]-[VBProjectのプロパティ]をクリックします。

VBAProjectプロパティで、[保護]タブをクリックします。
「プロジェクトを表示用にロックする」にチェックを入れ、「パスワード」「パスワードの確認入力」を入力し、<OK>をクリックします。今回はパスワードを「pass」と設定しています。

一度、Excelを保存し閉じて、再び開きます。

Visual Basic Editor画面でマクロを開けようとすると、パスワード入力画面が表示されます。ここに先ほど設定したパスワードを入力しないと、マクロの中身を見ることはできません。

参照

「数字が文字列として保存されています。」を一括で数字に変換
データが増減しても参照先を変更しない名前の管理(Excel)
連動するドロップダウンリストを名前の管理・入力規制・OFFSET・INDIRECTを使って「リストが表示されない」を解決(Excel)
Excel 複数セル内の改行(Alt+Enter)を一括で解除する方法
Excel関数を使って 縦の表に連動した(リンクした)横の表を一括で作成せよ
ワイルドカードとは。使い方いろいろ。(Excel)
Excelの改ページの点線を消す方法
Excelの背景にある薄グレーの枠線(罫線)を消す(非表示)方法
非表示になってしまった列を表示させる方法
ファイルを開くと空の画面も同時に開くのを解決(Excel)
図 画像 グラフ ボタン などのオブジェクトが消えてしまった時の表示方法(Excel)
大量の画像やグラフ等のオブジェクトで画面表示が遅いのを解決(Excel)
保護されたシートに対して、このコマンドは使用できません。テーマが変えられない現象を解決(Excel)
離れた複数列をまとめて列番号(数字)で選択する方法(Excel VBA)
Excel VBA で選択した複数のセルにデータ・数式を(Ctrl+Enter のように)一気に入力する方法
エクセル 塗りつぶしで指定した色のカラーインデックスを取得する(Excel VBA)
エクセル セル入力した文字色からカラーインデックスを取得する(Excel VBA)
エクセル 他の人に見られたくないシートを再表示できないようにしてVBAにパスワードを設定する(Excel VBA)

■■■スポンサーリンク■■■