|
こんばんわ。
ブックを開く時に最初にフォームでパスワード入力画面として
正しいパスワードを入力した場合のみ開くようにしたいのですが、
いろいろ試してもうまく作動しません
パスワード付保存→済
ブックを開こうとすると
1.保護されていますのメッセージ&パス入力画面
↓(パス入力)
2.上書き保存するにはパスが必要ですのメッセージ&パス入力画面
↓(パス入力)
3.フォーム入力画面
↓(パス入力)
4.上記でパス入力キャンセルしても開いてしまう。
これをまず、最初にフォーム入力からに変更したいのと
どうもうまくフォームでのパスチェックが出来ていないようなのです。
記述してあるマクロ
1)This Workbook内
'==============================================================
Const パスワード = "11111111" '
Sub パスワード付保存()
Dim retcode As Long
retcode = save_bk(Workbooks("test.xls"), "c:\test.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
Private Sub Workbook_Open()
UserForm1.Show
End Sub
2)標準モジュール内
'======================================================================
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, "c:\test.xls", pass_word.pass_str)
If retcode <> 0 Then
If retcode = 1004 Then
MsgBox "パスワードが違います"
Else
MsgBox Error(retcode)
End If
Else
MsgBox "ブックは、オープンされました"
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
'*************************************
まーったくわからないので
お願い致します。
|
|