• ベストアンサー

EXCEL VBAを使用して印刷及びコピー禁止をしたい

EXCELのVBAでちょっとした管理ソフトを作って いて、特定の人以外は印刷及びシートのコピー を禁止にしたいのですが、どのような方法があ るか教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんばんは。 VBAで作っているなら、ついでに、以下のように、ThisWorkbook モジュールで、設定したらよいかと思います。 'ThisWorkbook モジュール Private Const PSW As String = "aaa" 'パスワード Private Sub Workbook_BeforePrint(Cancel As Boolean) '印刷時の時のパスワード Dim Ret As String  Ret = Application.InputBox("パスワードを入れてください", "パス入力", Type:=2)  If StrComp(Ret, PSW, vbBinaryCompare) <> 0 Then   Cancel = True  End If End Sub Private Sub Workbook_Open() 'オープンの時にパスワード設定させる  With Worksheets("Sheet1")   .Unprotect Password:=PSW   .Protect Password:=PSW, UserInterFaceOnly:=True   .EnableSelection = xlNoSelection  End With  ThisWorkbook.Protect Password:=PSW, Structure:=True, Windows:=True    With Application.CommandBars("CELL").Controls.Add _     (Type:=msoControlButton, Temporary:=True)    .BeginGroup = True    .Caption = "コピープロテクト_解除"    .OnAction = "ThisWorkbook.CopyUnProtect"  End With   End Sub Sub CopyUnProtect() 'マウスの右クリックメニュー、パスワード解除とロックをさせる   Dim Ret As String   With Worksheets("Sheet1")     If .EnableSelection = xlNoSelection Then       Ret = Application.InputBox("パスワードを入れてください", "パス入力", Type:=2)       If StrComp(Ret, PSW, vbBinaryCompare) = 0 Then         .Unprotect PSW         .EnableSelection = xlUnlockedCells         Beep       End If     Else       .Protect Password:=PSW, UserInterFaceOnly:=True       .EnableSelection = xlNoSelection       Beep     End If   End With End Sub

関連するQ&A