KutoolsforOffice— 1 つのソリューション、5 つの強力なツール。少ない労力で大きな成果。

Excel でユーザーごとに個別のワークシートをパスワードで保護するには、どうすればよいでしょうか?

著者Xiaoyang変更日

Excel では、異なるワークシートにそれぞれ異なるパスワードを設定できます。つまり、あるユーザーは特定のパスワードで1 つのワークシートを編集でき、別のユーザーは別のパスワードで別のワークシートを編集できるということです。ただし、場合によっては、各ユーザーが自分のワークシートのみを表示・アクセスできるようにしたいだけの場合もあるでしょう。このような要件は、Excel で実現可能でしょうか?


各ワークシートを個別に保護し、ユーザーのワークシートへのアクセスを制限するには、以下の VBA コードを適用してください。

1.Excel ブックで新しいワークブックを開き、「Main」という名前の新しいシートを作成します(下記スクリーンショット参照)。

Excel のメインシートのスクリーンショット(最初のワークシートが作成された状態)

2.次に、「Alt」+「F11」キーを押して「Microsoft Visual Basic for Applications」ウィンドウを開きます。「プロジェクト - VBAProject」ペインの左側にある「ThisWorkbook」をダブルクリックして空のコードモジュールを開き、次の VBA コードをコードウィンドウにコピー&ペーストしてください(下記スクリーンショット参照)。

VBA コード:ユーザーごとに個別のシートをパスワードで保護する

Option Explicit
Dim gUserName As String
Dim gUserPass As String
Private Sub Workbook_Open()
'Updateby ExtendOffice
Dim xWShs As Sheets
Dim xWSh As Worksheet
Dim xUserName As String
Dim xPass As String
Dim xBolH As Boolean
GTINPUT:
xUserName = InputBox("Enter the user name")
If TypeName(xUserName) = "String" Then
    If xUserName = "" Then
        Exit Sub
    End If
End If
xUserName = LCase(xUserName)
xPass = InputBox("User name:" & xUserName & Chr(13) & Chr(10) & "Enter the password:")
If TypeName(xPass) = "String" Then
    If xPass = "" Then
    MsgBox "The password is incorrect, please enter the user name and password again."
    GoTo GTINPUT
    End If
Else
    MsgBox "The password is incorrect, please enter the user name and password again."
    GoTo GTINPUT
End If
Set xWShs = Worksheets
xBolH = False
For Each xWSh In Worksheets
    If xWSh.Name = xUserName Then
    xBolH = True
    Exit For
    End If
Next
If xBolH Then
Set xWSh = xWShs(xUserName)
On Error GoTo GTINPUT2
xWSh.Unprotect (xPass)
xWSh.Visible = True
xWSh.Activate
Else
Set xWSh = xWShs.Add
xWSh.Name = xUserName
xWSh.Activate
End If
gUserName = xUserName
gUserPass = xPass
Exit Sub
GTINPUT2:
    MsgBox "The password is incorrect, please enter the user name and password again."
    GoTo GTINPUT
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim xWSh As Worksheet
On Error Resume Next
Set xWSh = Worksheets(gUserName)
xWSh.Protect Password:=gUserPass, DrawingObjects:=False, Contents:=True, Scenarios:= _
False, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True, AllowInsertingColumns:=True, AllowInsertingRows _
:=True, AllowInsertingHyperlinks:=True, AllowDeletingColumns:=True, _
AllowDeletingRows:=True, AllowSorting:=True, AllowFiltering:=True, _
AllowUsingPivotTables:=True
For Each xWSh In Worksheets
    If xWSh.Name <> "Main" Then
        xWSh.Visible = xlSheetVeryHidden
    End If
Next xWSh
ActiveWorkbook.Save
End Sub

個々のシートにパスワードを設定するための VBA コードが表示された Visual Basic for Applications ウィンドウのスクリーンショット

3.次に、「Private Sub Workbook_Open()」スクリプトの末尾にカーソルを置き、「F5」キーを押してコードを実行します。すると表示されるプロンプトボックスに、そのユーザー用のシートを作成するためのユーザー名を入力してください(下記スクリーンショット参照)。

Excel で新しいシートを作成するためのユーザー名を入力するプロンプトボックスのスクリーンショット

4.次に、「OK」ボタンをクリックし、表示されるプロンプトボックスでこのシートを保護するパスワードを入力してください(下記スクリーンショット参照)。

Excel で新しく作成したシートを保護するためのパスワードを入力するプロンプトボックスのスクリーンショット

5.さらに「OK」ボタンをクリックすると、「ユーザー名」という名前の新しいシートが即座に作成されます。必要に応じて、そのユーザー向けのデータをすぐにご作成いただけます(下記スクリーンショット参照)。

ユーザー名で命名された、新たに作成された Excel シートのスクリーンショット

6.他の必要なシートを1 つずつ作成するには、上記の手順3~5 を繰り返してください。

7.シートを作成したら、「ファイル」>「名前を付けて保存」をクリックして現在のブックを保存します。「名前を付けて保存」ダイアログボックスでファイル名を入力し、「保存形式を指定」ドロップダウンリストから「Excel マクロ有効ブック(*。xlsm)」を選択してください(下記スクリーンショット参照)。

Excel の名前を付けて保存ダイアログボックスのスクリーンショット(「ファイルの種類」ドロップダウンリストに「Excel マクロ有効ブック (*.xlsm)」が表示されている)

8.次に、「保存」ボタンをクリックして、このファイルを保存してください。

9.その後、ブックを一度閉じて再度開き、「数式バー」上部に表示される[コンテンツの有効化]をクリックしてコードを有効にしてください。

VBA コードを有効にするための Excel のコンテンツ有効化ボタンのスクリーンショット

10.これで、特定のユーザーが特定のシートを開く際に、ユーザー名とパスワードの入力を求めるプロンプトボックスが表示されます。

11.最後に、このブックを他のユーザーに送信する際は、必ずそのユーザーにユーザー名とパスワードをお知らせください。これにより、各ユーザーは自分のシートのみを開いて編集でき、他のワークシートを閲覧する権限は一切持ちません。

最高の Office 業務効率化ツール

🤖KUTOOLS AI アシスタント:次に基づいてデータ分析を革新します:インテリジェント実行     コード生成  カスタム数式作成    データ分析とチャート生成  拡張機能呼び出し
人気の機能検索・ハイライト、または重複をマーキング     空白行を削除する     データを失うことなく列の結合またはセルを     数式を使用しない四捨五入...
スーパー LOOKUP複数条件 VLookup    複数値 VLookup     複数シート間 VLookup      ファジーマッチ....
高度なドロップダウンリストドロップダウンリストをすばやく作成     連動型ドロップダウンリスト     複数選択可能なドロップダウンリスト....
列マネージャー指定した数の列を追加列の移動非表示列の表示状態を切り替え範囲および列の比較...
注目の機能グリッドフォーカス     デザインビュー   強化された数式バー    ワークブックとシートマネージャー     リソースライブラリ(オートテキスト)  日付ピッカー     ワークシートの統合    暗号化/セルの復号化    リストからメール送信     スーパーフィルター      特殊フィルタ(太字のフォントを持つセルをフィルタリング/斜体/取り消し線。。。) 。。。
トップ15 ツールセット12 テキストツールテキストの追加特定の文字を削除、...)   50+チャートタイプガントチャート、...)   40+実用的関数誕生日に基づいて年齢を計算します、...)   19 挿入ツールQR コードを挿入パスから画像を挿入、...)   12 変換ツール単語に変換する為替レートの変換、...)   7 結合と分割ツール高度な行のマージセルの分割、...)さらに多数
Kutools はお好みの言語でご利用いただけます。英語、スペイン語、ドイツ語、フランス語、中国語、および40+の他の言語をサポートしています!

Kutools for Excel でExcel スキルを強化し、これまでにない効率を体験しましょう。Kutools for Excel は、生産性を高め、時間を大幅に節約できる高度な機能を300 以上提供します。最も必要な機能を今すぐ入手するにはこちらをクリック。。。


Office Tab は Office にタブインターフェースをもたらし、作業を大幅に簡単にします

  • Word、Excel、PowerPoint でタブを使った編集と閲覧を有効にします。Publisher、Access、Visio、Project でもご利用いただけます。
  • 複数のドキュメントを、新しいウィンドウではなく、同じウィンドウ内の新しいタブで開いたり作成したりできます。
  • 日々の生産性を50%も向上させ、毎日数百回ものマウスクリックを削減します!

すべてのKutools アドインが、たった1 つのインストーラーで完結。

Kutools for Officeスイートには、Excel ・Word ・Outlook ・PowerPoint 用のアドインと Office Tab Pro が含まれており、複数の Office アプリを横断して作業するチームに最適です。

ExcelWordOutlookTabsPowerPoint
  • オールインワンスイート— Excel、Word、Outlook、PowerPoint 用アドイン+Office Tab Pro
  • インストーラー1 つ、ライセンス1 つ— 数分でセットアップ可能(MSI 対応)
  • 連携してさらにパワーアップ— Office アプリ全体で生産性が向上
  • 30 日間のフル機能トライアル— 登録不要、クレジットカード不要
  • 最高のお得感— 個別アドイン購入よりお得