|
▼mixi さん、かみちゃんさん、こんにちは。
>データーベースとして使っているエクセルブックを
>ボタンから開く際にパスワードを入力しないと開けなくし
>特定の人しか変更等出来ないようにしたいのですが・・・
>術が分かりませんのでご教授ください。
データベースとなるブックにパスワードを付けたらいかがですか?
パスワードは、手動操作で保存しなおせば付けられます。
仮にこのデータベースとしてのブックをsvsample.xlsとしましょう。
以下のコードでもパスワード付で保存します。
'==============================================================
Const パスワード = "ichinose" '←パスワード
Sub パスワード付保存()
Dim retcode As Long
retcode = save_bk(Workbooks("svsample.xls"), "D:\My Documents\TESTエリア\svsample.xls", パスワード)
If retcode <> 0 Then
MsgBox Error(retcode)
Else
MsgBox "保存されました"
End If
End Sub
'==============================================================
Function save_bk(bk As Workbook, bk_path, Optional password = "") As Long
On Error Resume Next
save_bk = 0
Application.DisplayAlerts = False
bk.SaveAs Filename:=bk_path, password:=password, writerespassword:=password
save_bk = Err.Number
Application.DisplayAlerts = True
On Error GoTo 0
End Function
**************************************************************************
次に読み込み時は、ユーザーフォーム(Userform1)でパスワードを
入力させてみましょう。
ユーザーフォーム(UserForm1)には、
テキストボックス(TextBox1)---パスワード入力用
コマンドボタン(CommandButton1)--「OK」ボタン
コマンドボタン(CommandButton2)---「Cancel」ボタン
の三つのコントロールをパスワード入力フォームっぽい配置で作成して下さい。
標準モジュールに
'======================================================================
Public Type output_data
btn As Boolean 'true : okボタンがクリック False:Cancelボタンがクリック
pass_str As String 'btnがTrueのとき、パスワード
End Type
'======================================================================
Sub パスワード付読込()
Dim pass_word As output_data
Dim openbk As Workbook
Dim retcode As Long
pass_word = パスワード入力()
If pass_word.btn = True Then
retcode = open_bk(openbk, "D:\My Documents\TESTエリア\svsample.xls", pass_word.pass_str)
If retcode <> 0 Then
If retcode = 1004 Then
MsgBox "パスワードが違います"
Else
MsgBox Error(retcode)
End If
Else
MsgBox openbk.Name & "は、オープンされました"
End If
End If
End Sub
'========================================================================
Function パスワード入力() As output_data
'ユーザーフォームからパスワードを入力させる
'Output パスワード入力
Load UserForm1
With UserForm1
.TextBox1.PasswordChar = "*"
.Show
パスワード入力.btn = .ok
パスワード入力.pass_str = .TextBox1.Text
End With
Unload UserForm1
End Function
'========================================================================
Function open_bk(bkobj As Workbook, bk_path, Optional password = "") As Long
'指定されたパス名のブックをオープンする
On Error Resume Next
open_bk = 0
Set bkobj = Workbooks.Open(Filename:=bk_path, password:=password, _
writerespassword:=password)
open_bk = Err.Number
On Error GoTo 0
End Function
'*************************************
次いでUserForm1のモジュールに
'=========================================================================
Public ok As Boolean
'=========================================================================
Private Sub CommandButton1_Click()
ok = True
Me.Hide
End Sub
'=========================================================================
Private Sub CommandButton2_Click()
ok = False
Me.Hide
End Sub
'=========================================================================
Private Sub UserForm_Activate()
ok = False
TextBox1.SetFocus
End Sub
'=========================================================================
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then Cancel = True
End Sub
これでプロシジャー「パスワード付読込」を実行してみて下さい。
|
|