• 締切済み

Excelによるパスワード設定、IPアドレス制限

Excelファイルにて、下記の機能を実現できるかどうかを教えていただけないでしょうか。 また、実現するためにはどのような設定、機能などを利用すればいいのかを ご教授いただきたく質問致しました。 機能に関しましては、代替機能でも構いません。 Excelのバージョンは、2010にて動作すれば構いません。 よろしくお願いいたします。 ●機能(理想) 1.別のシートの列Aに入力されている値がプルダウンとして表示されており、 プルダウンを選択すると同じ行にある列B~列Eまでの情報が表示される 2.別のシートの情報は編集権限(パスワード等)にてロックされており、 編集不可または非表示として閲覧・編集ができない 3.指定のIPアドレスではない場合、Excelファイルの閲覧を拒否する ●不安事項 ・1に関しましては、通常であれば可能であると考えられますが、値を呼び出す対象シートが編集不可または非表示の場合でも値は呼び出されるのか。 ・3のIPアドレス拒否が利用できない場合、ファイル全体へパスワードを 掛ける方法しか思い浮かびませんが、その場合、2のシート情報の編集権限(パスワード等)は、別のパスワードを設けることは可能でしょうか。 または、ファイル全体へパスワードを設けて、シートを編集できるパスワード、 シートが編集不可または非表示のパスワードと2つのパスワードを設定することは可能でしょうか。

みんなの回答

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

1は、データの入力規則とVlookup関数で実現可能 2は、「別のシート」を非表示にしたうえでブックの保護で実現可能 3は、VBAでWorkbook_OpenにIPを調べて許可IP以外なら終了するようなコードを書けば可能。 ただし、マクロ無効で開かれると3が実現できないので、一工夫 2は予めやっておいて、Workbook_Openの中でIPチェックと1の設定も行う。 そして、Workbook_BeforeCloseで1の設定を消してから終了する。 以下のサンプルマクロはThisWorkBookに書いてください #コードの詳細説明は省略します 'ブックを開くときの処理 Private Sub Workbook_Open()   sIP = sGetIP() 'IPアドレス取得   If sIP <> "192.168.1.1" Then     MsgBox ("許可されていないIPです")     End   End If   With Worksheets(1)     '例としてA1にリストの入力規則、B1:E1にセル式を入れます。     .Range("A1:E1").Clear     'プルダウンリストの設定     .Range("A1").Validation.Add Type:=xlValidateList, Formula1:="=Sheet2!$A$1:$A$5"     'Vlookupの設定     .Range("B1:E1").FormulaR1C1 = "=IFERROR(VLOOKUP(RC1,Sheet2!C1:C5,COLUMN(),FALSE),"""")"   End With End Sub 'ブックを閉じるときの処理 Private Sub Workbook_BeforeClose(Cancel As Boolean)   Worksheets(1).Range("A1:E1").Clear End Sub 'IPアドレス取得 Function sGetIP() As String   Dim oWMI   Dim cNICs   Dim oNIC   Dim sIP      Set oWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")   Set cNICs = oWMI.ExecQuery("Select * from Win32_NetworkAdapterConfiguration " & "Where (IPEnabled = TRUE)")   '手抜き版なので最初に見つかったIPだけを返す   For Each oNIC In cNICs     For Each sIP In oNIC.ipaddress       sGetIP = sIP       Exit For     Next     Exit For   Next End Function

関連するQ&A