2007年7月27日
【EXCEL】フォルダ内のブックのパスワード一括解除
最近は情報の漏洩とかでエクセルにもパスワードをかける場合が多い。しかし、最終的には解除しなければいけないんだが、100個くらいもあると結構面倒くさい。開くときにパスワードを入力、保護を解除するときにパスワード入力だ。そこで、一括で出来ないかいろいろ工夫してみた。ネットで調べるとunprotectメソッドが主流だが、これだと、ツール-オプション-セキュリティ-パスワードに設定されているものを解除することは不可能だ。
Sub パスワード一括解除()
Dim myFilename As String
Dim myPath As Variant
Dim myPassword As String
myPassword = "qyo0625"
myPath = "C:\unPassword\"
myFilename = Dir("C:\unPassword\*.xls")
Do Until myFilename = ""
Workbooks.Open Filename:=myPath & myFilename, Password:=myPassword
ActiveWorkbook.Password = ""
'ActiveWorkbook.Unprotect (myPassword) ブックの保護のみ場合は有効
ActiveWorkbook.Save
Application.DisplayAlerts = False 'メッセージを出さない
ActiveWorkbook.Close
myFilename = Dir()
Loop
End Sub
------------------------------
UnProtect メソッド
指定された文書の保護を解除します。文書が保護されていない場合にこのメソッドを使用すると、エラーが発生します。
expression.UnProtect(Password)
expression 必ず指定します。Document オブジェクトを表すオブジェクト式を指定します。
Password 省略可能です。バリアント型 (Variant) の値を指定します。文書を保護するときに設定したパスワードの文字列を指定します。パスワードでは大文字と小文字が区別されます。文書がパスワードで保護されていて、指定されたパスワードが正しくない場合、パスワードを求めるダイアログ ボックスが表示されます。
使用例
次の使用例は、パスワードとして "Blue" を使用して、作業中の文書の保護を解除します。文書にパスワードが指定されている場合は、パスワードを求めるダイアログ ボックスが表示されます。
If ActiveDocument.ProtectionType <> wdNoProtection Then
ActiveDocument.Unprotect Password:="Blue"
End If
次の使用例は、作業中の文書の保護を解除します。その後、文字列を挿入し、文書を保護して変更履歴だけを変更できるようにします。
Set aDoc = ActiveDocument
If aDoc.ProtectionType <> wdNoProtection Then
aDoc.Unprotect
Selection.InsertBefore "第 6 部門"
aDoc.Protect Type:=wdAllowOnlyRevisions, Password:="Blue"
End If
- by editor
- at 14:59

編集長のおすすめの一冊!2010
comments
マクロは素晴らしいです。
普段経理の皆さんはマクロを使うことが難しいと思います。
簡単に一括でフォルダ内のすべてのExcelを保護解除出来る方法もありますよ。
http://superdbtool.blog.jp/archives/1000095487.html