複数のExcelファイルに同じパスワードがセットされている場合に、それを一括して解除して保存するマクロです。
逆に一括してパスワードをセットすることもできます。
最初にダイアログでパターンを訊かれますので、解除ならば「はい」、セットならば「いいえ」を選択します。
次にダイアログでパスワードをセットします。
最後にファイルが保存されているフォルダを指定します。下位階層には対応していません。
「”\*.xls”」の部分を適宜、変更してください。
Excel2007で確認しました。
Sub 複数ファイルパスワード操作()
Dim myfolder, myfn, myword, pwopen, pwclose
Dim pattern
'操作を選択
pattern = MsgBox("パスワード解除ならば「はい」、セットならば「いいえ」", vbYesNo)
If pattern = vbCancel Then
Exit Sub
End If
'パスワードをセット
myword = InputBox("パスワードを入力。")
If pattern = vbYes Then
pwopen = myword
pwclose = ""
ElseIf pattern = vbNo Then
pwopen = ""
pwclose = myword
End If
'フォルダを選択
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "操作したいファイルのあるフォルダを選択"
.AllowMultiSelect = False
If .Show = -1 Then
myfolder = .SelectedItems(1)
Else
Exit Sub
End If
End With
'ファイルを操作
myfn = Dir(myfolder & "\*.xls", vbNormal)
Do Until myfn = ""
Call ファイル開閉(myfolder & "" & myfn, pwopen, pwclose)
myfn = Dir
Loop
End Sub
Dim myfolder, myfn, myword, pwopen, pwclose
Dim pattern
'操作を選択
pattern = MsgBox("パスワード解除ならば「はい」、セットならば「いいえ」", vbYesNo)
If pattern = vbCancel Then
Exit Sub
End If
'パスワードをセット
myword = InputBox("パスワードを入力。")
If pattern = vbYes Then
pwopen = myword
pwclose = ""
ElseIf pattern = vbNo Then
pwopen = ""
pwclose = myword
End If
'フォルダを選択
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "操作したいファイルのあるフォルダを選択"
.AllowMultiSelect = False
If .Show = -1 Then
myfolder = .SelectedItems(1)
Else
Exit Sub
End If
End With
'ファイルを操作
myfn = Dir(myfolder & "\*.xls", vbNormal)
Do Until myfn = ""
Call ファイル開閉(myfolder & "" & myfn, pwopen, pwclose)
myfn = Dir
Loop
End Sub
Function ファイル開閉(myfn, pwopen, pwclose)
Workbooks.Open Filename:=myfn, Password:=pwopen
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=myfn, Password:=pwclose, WriteResPassword:=""
Application.DisplayAlerts = True
ActiveWorkbook.Close
End Function
Workbooks.Open Filename:=myfn, Password:=pwopen
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=myfn, Password:=pwclose, WriteResPassword:=""
Application.DisplayAlerts = True
ActiveWorkbook.Close
End Function
コメント
[…] You Look Too Cool » 複数ファイルパスワード操作 それのWord版を作ってみました。Word2007で確認しました。 Sub […]
はじめまして。
業務で必要な内容を検索で見つけて訪問させていただいています。
初心者で勉強中なので、まだまだVBAを使い慣れていません。
そのため、初歩的な質問で大変恐縮です。
エクセル2010で使用してみたところ、下記のところでエラーとなりました。
「実行時エラー1004」でフォルダ内に格納している一番上のダミーのファイル名が表示され「見つかりません」とのこと。
Workbooks.Open Filename:=myfn, Password:=pwopen
フォルダはデスクトップに作成し、マクロのファイルも同じフォルダに格納し、
ダミーで複数のPWなしファイルに対して一括でセットしようとしていました。
初歩的な質問で大変恐縮ですがが、ご教示お願いできますでしょうか。
どうぞよろしくお願いいたします。
>maroさん
環境によって動かないケースがあるようです。
「Call ファイル開閉(myfn, pwopen, pwclose)」
の部分を
「Call ファイル開閉(myfolder & “\” & myfn, pwopen, pwclose)」
のように書き直してください。本文は修正済みです。
使い方は合っていると思います。
よろしくお願いします。