2016-04-01 3 views
1

朝の人々、日の最後のカップル以上行レベルのセキュリティ - どのようなアプローチで、私が使用する必要があります。

私は、VBAマクロを使用してExcelの「擬似」行レベルのセキュリティを実装する方法を見つけるためにしようとしています。 私が必要とするのは、Windowsユーザーの資格情報に基づいてすべてのExcelテーブルをフィルタリングすることです。問題は、私はこの問題に取り組む方法がわからないということであり、これはこれまでのところ、私が持っている唯一のアイデアです:

1.Derive the NT account and store it in namedrange 
2. Use autofilter based on NamedRange for each table in my spreadsheet 
3. Delete/Hide the unnecessary rows ? 

例:おそらく

enter image description here

、ある他の方法があります私のシナリオにはより適していますが、それらを見つけることはできませんでした。 あなたが正しい方向に向けることができれば、私はそれを感謝します。 Excelで行レベルのセキュリティを実装するに

おかげ

+0

データテーブルには、ユーザー名が表示される各行を表示できるようにするユーザー名を持つ列が含まれていますか。 – Vegard

+0

正解 - http://i.stack.imgur.com/pLdze.png – Kiril

+0

これはやや難しいはずですが、私は解決策を考え出すことはできません。誰かがそれに私を打ち負かさない限り、私はそれを調べようとします。私はいくつかのAPI/COMコールを介してNTアカウントを調べることができ、フィルタの変更を防ぐためにシートをロックすることができると思います。しかし、シートに対するコードの実行を防ぐことができないのかどうかはわかりません。できない場合は、どのユーザーもVBAを使用して、表示されないデータを取得できます。だから私はまだこの努力が必要なものになるかどうかはわかりません。 – Vegard

答えて

1

これは、特定のWorkBook VBAプロジェクトの Moduleにモジュールを貼り付けることで実現できます。 .dotmとしてWorkbookを保存することを忘れないでください。

J.Chomelが言いましたように、WorkBookのパスワードをバイパスするのは最も難しいことではありません。

明らかに、ユーザーがそこからWorkBookパスワードにアクセスできないように、VBAプロジェクトをパスワードで保護する必要があります。

Private Sub Workbook_Open() 

     Dim CurrentUserName As String 
     CurrentUserName = Environ("Username") 

     Dim WorkBookPassword As String 
     'Replace password with your desired password 
     WorkBookPassword = "password" 

     Dim DataWS1 As Worksheet 
     'Replace Sheet1 with your specific sheet name 
     Set DataWS1 = ThisWorkbook.Sheets("Sheet1") 

     With DataWS1 

      .Unprotect WorkBookPassword 

      If .AutoFilterMode Then .AutoFilterMode = False 

      .UsedRange.AutoFilter Field:=3, Criteria1:=CurrentUserName 

      .Protect Contents:=True, _ 
        AllowFiltering:=False, _ 
        UserInterfaceOnly:=True, _ 
        Password:=WorkBookPassword 
     End With 

End Sub 
+1

この回答は、彼が求めていたOPを提示しましたが、これはVBAによるアクセスから保護されないことに興味がある人のためのものです。追加の別のワークブックまたは.vbsを使用すると、好きなデータをすべて表示またはコピーできます。 – Vegard

+0

@Vegardデータが 'Sheet'や' WorkBook'のパスワードである必要があるかどうかによって、平均Joeが持ってはならないデータにアクセスするのを防ぐことができます。 –

+0

ある程度合意しました。ユーザーが持っていない情報に積極的にアクセスしようとしないと仮定すれば十分です。この前提が成り立たない場合は、ワークブックを開くとすぐにデータが侵害されます。 – Vegard

1

は、あなたが最初の場所でExcelでデータを取得することは避けてください。 vbaを使用してフィルタを適用すると、一部のユーザーがvbaを簡単にバイパスするためです。したがって、セキュリティとは呼ばれませんでした。

関連する問題