同僚に配布する Excel アプリケーションを作成しています。特定のシートや機能へのアクセスを無効にする必要があるベースのアクセス許可。私はシートを保護して非表示にすることができましたが、知識のあるユーザーは非表示のワークシートを内部または外部で反復処理してデータを公開することができます。私はそれを止める必要があります。
プロセスは次のとおりです。
ワークブックが開かれると、リモート データベースへのクエリが実行され、一連のユーザー権限が返されます。次に、これらの権限が「PERMISSIONS」というワークシートに出力されます。
以下のコードは、ワークシートのアクセス許可を反復処理して、列名を渡すことで特定の設定を見つけます。
CheckPerm "Timesheet"
Public Function CheckPerm(nPermColTarget As String) As Boolean
Dim Counter As Integer
Dim x As Integer
Dim y As Integer
Counter = 3
Do Until Sheet7.Cells(Counter, 1).Value = Associate_Name
Counter = Counter + 1
Loop
y = Counter
Counter = 2
Do Until Sheet7.Cells(2, Counter).Value = nPermColTarget
Counter = Counter + 1
Loop
x = Counter
If Sheet7.Cells(y, x).Value = "ON" Then
CheckPerm = True
GrntDenySheetAccess nPermColTarget, y, x, CheckPerm
Else
' "OFF"
CheckPerm = False
GrntDenySheetAccess nPermColTarget, y, x, CheckPerm
End If
End Function
Private Sub GrntDenySheetAccess(nPermColTarget As String, y As Integer, _
x As Integer, CheckPerm As Boolean)
Select Case nPermColTarget
' Sheet1
Case "Timesheet"
If CheckPerm = True Then
Sheet1.Unprotect "pass"
Sheet1.Visible = xlSheetVisible
End If
If CheckPerm = False Then
Sheet1.Protect "pass"
Sheet1.Visible = xlSheetVeryHidden
End If
End Select
End Sub
しかし、シート 1 が非表示で保護されていても、非表示のシート 1 のコンテンツを繰り返し処理して情報にアクセスできます。とにかくそれを止めるには?
ありがとう