1

同僚に配布する 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 のコンテンツを繰り返し処理して情報にアクセスできます。とにかくそれを止めるには?

ありがとう

4

1 に答える 1

3

Excel ブック内のあらゆるものへのアクセスを安全に保護する方法はありません。Excel バージョン 2007 以降では、パスワードのクラックははるかに困難ですが、ユーザーがワークブックを.xlsファイルとして保存するだけで簡単にクラックできます。

あなたができる最善のことは、誰かが入り込むのを少し難しくすることです. ファイルをパスワードで保護し、アクセスさせたくないシートを設定してxlSheetVeryHidden、ユーザーが Excel ユーザー インターフェイスからシートを再表示できないようにします。

あなたの質問の下のコメント者は正しいです。安全なアプリケーションが必要な場合、Excel は答えではありません。

ここに画像の説明を入力

そうは言っても、データベース層でセキュリティを強化すると、Excel は優れた UI になります。ユーザーが見てはいけないデータを保存または取得しないようにしてください。

于 2013-06-17T00:52:59.947 に答える