youblog

Excel VBA ツール : フォルダ内の全 Excel ファイルの パスワード を 一括解除 する

今回は、 フォルダ内の Excel ファイルにかかっている パスワード を 一括解除 するVBAマクロ ツール を作ってみたのでシェアしますね。

 

 

こんにちは、ゆう(@ProgYuki)です。

 

パスワードがかかっているExcelファイルを開く時にいちいちパスワードを入力するのが面倒と思うことってありませんか?

特に子会社等に同じファイルをばら撒いて、データを入力してもらい、それらを回収して集計する時等ファイルが複数ある場合はさらに面倒ですね。

 

私も仕事の中で100社以上から送られてくるパッケージ(Excelファイル)をAlteryxで集計する際にパスワードを解除してないとエラーが発生するので、パスワード解除しておく必要があった時に手作業で100個以上のファイルを開いて、パスワードを解除するなんて面倒すぎてムリ、、、と思った時がありました。

ということで、Excelファイルにかかっているパスワードを一括解除するVBAマクロツールを作ってみましたので、シェアしたいと思います。
 

 

Excel VBA ツール : フォルダ内の全 Excel ファイルの パスワード を 一括解除 する

 

 

マクロ ツール の機能、使用用途、使い方

 

 
機能
 

このツールの機能は、

フォルダと解除用パスワードを指定すると、指定されたフォルダ内の全てのExcelファイルのパスワードを一括解除する

というものです。

 
 
使用用途
 

使用用途は、

 

 

等を想定しています。

 
 
使い方
 

コードをコピーする場所やプログラムの起動の仕方は後ほど説明しますが、使い方としては、

 

  1. パスワード解除したいExcelファイルを特定のフォルダにまとめておいて
  2. VBAプログラムを起動し、
  3. フォルダを選択し、
  4. 解除用パスワードを入力すると
  5. 指定フォルダ内の全てのExcelファイルのパスワードが解除される

 

という感じです。

*今回のツールでは、解除用パスワードは全ファイルで同一である必要があります。
複数パスワードがある場合は、パスワードの異なるファイル毎にフォルダ分けをして、上記と同様に実行すれば解決できます。

 
 

画像つきで示すと、

 

①パスワード解除したいExcelファイルを特定のフォルダにまとめておいて

 

例として、3つのExcelファイルを「test」というフォルダに格納しています。

 

②VBAプログラムを起動し、

 

起動の仕方はいろいろとあります。

ご自身でも調べてみると良いと思いますが、一番わかりやすい方法としては、タブの

開発」→「マクロ

と進むと実行できるマクロの一覧が表示されるので、今回は「UnprotectFiles」という名前にしているので、それを選択して「実行」を押せば実行されます。

 

③フォルダを選択し、

 

マクロを実行すると、ポップアップが出てくるので、フォルダを指定します。

今回は、「test」というフォルダの中に3つのExcelファイルが入っているので、「test」を選択した状態でOKを押します。

 

④解除用パスワードを入力すると

 

次に解除用のパスワードの入力が求められるので、パスワードを入力して、OKを押します。

パスワードは、全ファイルで同一である必要があります

 

⑤指定フォルダ内の全てのExcelファイルのパスワードが解除される

 

パスワードが問題なく解除されると上記の通りメッセージが出て、パスワードが解除されます。

 

パスワードが間違っている場合は、下記の通りエラー表示になるようにしています。

ちなみに、パスワードがかかってないExcelファイルが混じっていても問題なくプログラムは実行されて、全てのファイルのパスワードが解除されます。

異なるパスワードが設定されているファイルが混じっている場合は、入力した解除用パスワードと異なるところまで処理が実行され、そこでストップし、エラー表示になります。

うまく実行できましたかね?
もし、何かエラー等があれば、コメントかTweetでご連絡いただけると幸いです。

 

VBA コードの表示

 

コードの全文は下記の通りです。

Sub UnprotectFiles()
 
On Error GoTo Err
 
Done:
 
  Dim FilePath As String
  Dim FilePassword As Variant
  
'①フォルダの指定
  With Application.FileDialog(msoFileDialogFolderPicker)
    .AllowMultiSelect = False
    If .Show = True Then
      FilePath = .SelectedItems(1) & "\"
    Else
      Exit Sub
    End If
  End With
  
'②解除用パスワードの指定
  FilePassword = InputBox _
    ("解除するパスワードを入力してください", "パスワード入力")
    
  If FilePassword = False Then Exit Sub
  
  With Application
    .ScreenUpdating = False
    .DisplayAlerts = False
    .EnableEvents = False
    .Calculation = xlCalculationManual
  End With
 
  Dim buf As String
  Dim myBook As String
  Dim TargetBook As Workbook
  buf = Dir(FilePath & "*.xls*")
  myBook = ThisWorkbook.Name
  
'③ファイルを一つづつ開き、パスワードを空にして保存
  Do While buf <> ""
    Set TargetBook = Workbooks.Open _
        (Filename:=(FilePath & buf), Password:=FilePassword)
    With TargetBook
      If .Name <> myBook Then
        .SaveAs Filename:=(FilePath & buf), Password:=""
        .Close
      End If
    End With
    buf = Dir()
  Loop
  
  With Application
    .ScreenUpdating = True
    .DisplayAlerts = True
    .EnableEvents = True
    .Calculation = xlCalculationAutomatic
  End With
  
  MsgBox "パスワード解除完了", vbOKOnly + vbInformation, "パスワード一括解除マクロ"
  
  Exit Sub
 
Err:
 
  MsgBox "エラーが発生しました。正しいパスワードを入力してください。", vbOKOnly + vbInformation, "パスワード一括解除マクロ"
    
End Sub

 

一見コードが長く見えますが、

 

 

と書いてあるコードのブロックがメインです。

 

ちなみに

 

 

については、下記の記事で詳しく書いているので、そちらを参考にされてみてください。

 

Excel VBA で 仕事効率化 : リンク付き INDEX を自動作成しExcel資料を読みやすくする!
今回は、 Excel VBA の マクロ 機能で リンク付き INDEX を自動作成し、Excel資料を読みやすくして 仕事効率化 する方法をシェアします!「Excelの仕事を効率化したい!」「VBAに興味があって、人のプログラムを見て学習したい!」という方にとって役に立つ内容かと思います。

 

この記事もツール紹介の記事ですが、「VBA プログラムの表示」の項目の後に詳しいコードのコピペの仕方や注意点について書いてます。

ということで本日は以上になります。

 

 

私もVBA含めプログラミングを学習中の身なので、

もっとこうした方が効率的に書けるよ!
こんな業務効率化したいんだけど、VBAでできるかな?

など、ご指摘やアイディアなどをいただけると嬉しいので、コメントやいただけると幸いです!

 

 

Excel VBAを独学したい方向けに記事を書きましたので、興味がある方はこちらもご参考にされてみてください

 

Excel VBA を最も効率的に 独学 する方法
仕事にルーティン業務が多い方ほどVBAの力を爆発的に発揮して業務効率化できるので、VBAを勉強しようと考えたことがある方も多いのではないでしょうか。今回は私が6年ほど Excel VBA を使っていて最も効率的だと考える 独学 方法をお伝えしたいと思います。

 

 

それでは、本日もお読みいただきありがとうございました。

Twitter(@ProgYuki)でも情報発信しているので、ぜひフォロー、いいね、RT等お願いします!

 

ゆう

モバイルバージョンを終了