- ベストアンサー
EXCEL VBAを使用して印刷及びコピー禁止をしたい
EXCELのVBAでちょっとした管理ソフトを作って いて、特定の人以外は印刷及びシートのコピー を禁止にしたいのですが、どのような方法があ るか教えてください。
- みんなの回答 (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