他人から定期的にパスワード付きのExcelファイルが送信されるようなケースはよくあると思います。
よく使うパスワードをあらかじめセットしておき、マクロを使って開く方法を考えます。
コードは下に示す通りです。
配列「known_passwords」にパスワードを記述しておきます。行を増やすときは括弧の数字を一つずつ増やします。
「Dim known_passwords(10) As String」の数値は配列の最大値です。大きめの数値にしておくとよいでしょう。
実行すると「ファイルを開く」ダイアログが開きます。ここで開きたいファイルを指定します。
記述しておいたパスワードを順番に試していきます。合致する文字列があればほぼ一瞬で開くでしょう。
Sub 既知のファイルパスワードを外す()
Dim known_passwords(10) As String
'パスワードリスト
known_passwords(0) = "password"
known_passwords(1) = "123456"
known_passwords(2) = "password"
known_passwords(3) = "admin"
Dim try_password As String
Dim try_number As Long
Dim file_name
On Error GoTo errorlabel
file_name = Application.GetOpenFilename
If file_name = False Then Exit Sub
try_password = known_passwords(0)
try_number = 0
Workbooks.Open Filename:=file_name, Password:=try_password
Exit Sub
errorlabel:
try_number = try_number + 1
try_password = known_passwords(try_number)
If try_number >= UBound(known_passwords) Then
MsgBox "開けませんでした。"
Exit Sub
End If
Resume
End Sub
Dim known_passwords(10) As String
'パスワードリスト
known_passwords(0) = "password"
known_passwords(1) = "123456"
known_passwords(2) = "password"
known_passwords(3) = "admin"
Dim try_password As String
Dim try_number As Long
Dim file_name
On Error GoTo errorlabel
file_name = Application.GetOpenFilename
If file_name = False Then Exit Sub
try_password = known_passwords(0)
try_number = 0
Workbooks.Open Filename:=file_name, Password:=try_password
Exit Sub
errorlabel:
try_number = try_number + 1
try_password = known_passwords(try_number)
If try_number >= UBound(known_passwords) Then
MsgBox "開けませんでした。"
Exit Sub
End If
Resume
End Sub
コメント