• ベストアンサー

Excelのブックの保護を一括で解除できるバッチ

フォルダ内配下全てのExcelファイルのブックの保護を解除できるバッチやマクロをご存知の方ご教示していただきたくご質問させていただきました。 具体的には「関東」というフォルダ内に「東京」「神奈川」「埼玉」など複数のフォルダ内にExcelがあり関東フォルダ内でバッチを適応するとフォルダ配下全てのExcelファイルのブック保護を解除できる仕組みを探しています。 以上、よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • HohoPapa
  • ベストアンサー率65% (454/692)
回答No.2

対象のエクセルブックたちはxls,xlsx限定で パスワードは省略、または共通 という条件でよければ 後記コードはいかがでしょうか なお、マクロブックの拡張子はxlsmにする必要があり、 また、このマクロブックを配置したフォルダーと その下階層、その下階層... といった具合に、全階層を対象にしています。 Option Explicit Sub ProtectOnOff()  With ThisWorkbook.Sheets(1)   GetFileName .Range("C3").Value, _    .Range("C4").Value, _    .Range("C5").Value  End With End Sub Sub GetFileName(strPath As String, Switch As String, password As String)  Dim tSfo As Object  Dim tGf As Object  Dim tFi As Object  Dim tSub As Object  Dim tgBook As Workbook    Set tSfo = CreateObject("Scripting.FileSystemObject")  Set tGf = tSfo.GetFolder(strPath)  For Each tFi In tGf.Files   If ((Right(tFi.Name, 5) = ".xlsx") Or (Right(tFi.Name, 4) = ".xls")) Then    Set tgBook = Workbooks.Open(tFi.Path)    If Switch = "保護" Then     tgBook.Protect Structure:=True, Windows:=False, password:=password    ElseIf Switch = "非保護" Then     tgBook.Unprotect password:=password    End If    tgBook.Save    tgBook.Close   End If  Next  For Each tSub In tGf.SubFolders   GetFileName tSub.Path, Switch, password  Next   End Sub

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • HohoPapa
  • ベストアンサー率65% (454/692)
回答No.3

#2に補足します。 C4セルを"非保護"ではなく、"保護"として実行すれば 指定したパスワードで保護します。 また、パスワードを省略する場合は C5セルを空にしてください。

全文を見る
すると、全ての回答が全文表示されます。
  • NuboChan
  • ベストアンサー率47% (748/1589)
回答No.1

階層を前提とした保護削除では有りませんが、 同一フォルダーなら以下があります。 一度、ターゲットを同一フォルダーに集めて解除後に元のフォルダーに配置換えすれば良いと思いますが ? https://excel-macro.com/all-file-sheets-protect/ マクロが2つ有るので下の方を利用する事

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセル 複数ブックの保護の一括解除について

    エクセル2003を使用しています。 具体的に質問致します。 1つのフォルダ内に100位のブックが存在します。 そのブックには、シートが1つだけあり、保護がかかっています。(パスワードはなし) その保護を一括して解除したいのです。マクロなどを使えば可能でしょうか? よろしくお願いします。

  • シートをまとめて保護・解除したい

    エクセル97、2000を使っています。 エクセルもシートが多くなると、その保護と解除が面倒で困っています。 いちいちシートを選択して保護と解除をしなければなりません。 マクロなどを使わずに、全てのシートを一度に保護・解除する方法はないでしょうか。シートの中にも保護してるセルとそうでないセルがあるので ブックを保護するわけにもいきません。

  • エクセル2003で、ブックの保護の解除ができない

    (1)エクセル2003で、ブックを保護したのですが、保護の解除ができません。メニューバーの[ツール]→[保護]をクリックしても”ブックの保護”はあっても、”ブックの保護の解除”という文言はでてきません。どのようにすればブックの保護は解除できるのでしょうか? (2)同じくエクセル2003で、減少する数値の入力のしかたがわかりません。 メニュー:[編集]→[フィル]→[連続データの作成]をクリックすると連続データのダイアログボックスが出てきますが、≪増分値≫に減少分の負の数値を入力しても減少されませんでした(例えば”-4”と増分値に入力して、元になるデータを選択して上方向にドラッグしてフィルハンドルで結果の変更をしても増加になることはあっても減少にはならなかったです。)。(1)も(2)も”よくわかるシリーズ”に書いてあることですが、自分のパソコンでやってみると本のとおりにはなりませんでした。 どなたか教えていただけるとありがたいです。ちなみにOSはXPです。宜しくお願い致します。

  • エクセルのシートの保護、ブックの保護について

    エクセルのシートの保護、ブックの保護について いつもお世話になっております。 他のエクセルファイルとリンクしているエクセルのファイルを開いたときに、リンクの更新が表示されます。 ファイルを開いたときにリンクの更新がされないようにしたいのですが、シートの保護、ブックの保護でリンクが更新されないようにはできないでしょうか? それとも、リンクそのものを解除するしか方法がないのでしょうか…。

  • エクセルシートとブックの保護解除を長く保たせる為には、どうしたら良いで

    エクセルシートとブックの保護解除を長く保たせる為には、どうしたら良いでしょうか? 保護が、かかっているエクセルシートで、 作業をしているので、いつも【ツール】から、 エクセルシート、ブックの保護解除を選択し作業をしています。 ですが、すぐに、また保護がかかってしまい、 沢山、作業しなければならないのに、 その度に、解除をイチイチしなくてはならず、 とても面倒くさいのです。 保護解除を一時的では無く、 シートを開いてる間中、解除のままにしておく方法は何かないでしょうか?

  • フォルダ内の複数ブック・シートを一括保護/解除する

    フォルダの中に複数のExcelファイル(ブック)が入っており、 それら全てのブック・シートの保護/解除を一括して行うマクロを現在使用しています。(後述) <現在の利用状況> ◆フォルダの中に複数のExcelファイル(ブック)が入っている(雛形、シート構成は全て同じ) ◆全てのブックにパスワード付きでブック保護・シート保護をかけている→パスワードは共通(1111) ◆マクロ用ブックは上記の処理対象ブックとは別フォルダに入れている (現在のVBAでは同一フォルダ内に入れた状態では作動しない) ◆マクロを実行する都度、任意のフォルダを選択する <改善希望> ◆マクロ用ブックと処理対象のブックを同一フォルダに入れた状態で作動するようにしたい (同一フォルダ内の自ブック以外のブックに対してブック・シートの保護/解除を一括処理したい) VBA初心者なので構文をどう書き換えるかで行き詰っています。 ThisWorkbook.Path を使うというのはなんとなく分かりますが、 何パターンか試してエラーの繰り返しです…。 ご教示頂けます様お願いいたします。 ------------------------------------------------------------------------- Sub 選択フォルダ内全て保護() Dim myFol As Object, myFile As Object, sh As Worksheet Dim openFilePath As String Const myPass As String = "1111" Set myFol = CreateObject("Shell.Application").BrowseForFolder(0, "フォルダを選択してください", 0) If myFol Is Nothing Then Exit Sub Application.ScreenUpdating = False openFilePath = myFol.self.Path & "\" With CreateObject("Scripting.FileSystemObject") For Each myFile In .GetFolder(openFilePath).Files If .GetExtensionName(myFile.Path) = "xls" Then With Application.Workbooks.Open(myFile.Path) For Each sh In .Worksheets sh.Protect Password:=myPass, DrawingObjects:=False, Contents:=True, Scenarios:=True, _ AllowFormattingCells:=True, AllowFormattingColumns:=True, AllowFormattingRows:=True, _ AllowInsertingRows:=True, AllowSorting:=True, AllowFiltering:=True, AllowUsingPivotTables:=True Next sh .Protect Password:=myPass, Structure:=True, Windows:=False .Save .Close False End With End If Next myFile End With MsgBox "終了しました" End Sub ------------------------------------------------------------------------- Sub 選択フォルダ内保護全て解除() Dim myFol As Object, myFile As Object, sh As Worksheet Dim openFilePath As String Const myPass As String = "1111" Set myFol = CreateObject("Shell.Application").BrowseForFolder(0, "フォルダを選択してください", 0) If myFol Is Nothing Then Exit Sub Application.ScreenUpdating = False openFilePath = myFol.self.Path & "\" With CreateObject("Scripting.FileSystemObject") For Each myFile In .GetFolder(openFilePath).Files If .GetExtensionName(myFile.Path) = "xls" Then With Application.Workbooks.Open(myFile.Path) For Each sh In .Worksheets sh.Unprotect Password:=myPass Next sh .Unprotect Password:=myPass .Save .Close False End With End If Next myFile End With MsgBox "終了しました" End Sub -------------------------------------------------------------------------

  • 保護及び保護の解除を一括して処理する方法のご教示を。

    1個のブックに、30シート作成してあります。(増減の可能性があり最終が何シートになるかわかりません) シート名は、数字単体名と漢字名のものとが混在しています そのようなブックが多数あります 各シートに保護が掛けてあります 訂正などする時の為に、保護と保護解除をマクロで組み、各シートにマクロボタンで操作するようにしてあります しかし、ブック全体を修正す時に各シートの保護をいちいち解除しなければなりません。 そこで、一括して保護及び保護の解除をしたいので、その方法を御教示下さい。 1.ブック単位で、各シートの保護及び保護の解除を一括でする。 2.シート毎に保護及び保護の解除する場合は現在のマクロを使用したい 上記のような条件で、各ブック共通のマクロの作成を御教示御願い致します

  • ブックの共有を解除する際の確認画面をマクロで処理する方法について

    ブックの共有を外す作業で下記のマクロを実行しています。 If ActiveWorkbook.MultiUserEditing Then ActiveWorkbook.ExclusiveAccess End If その時に 「~このファイルの保護を解除してもよろしいですか?」 と表示される確認画面を[はい(Y)]でマクロ処理する事は 可能でしょうか? あるフォルダ配下に100以上のエクセルファイルがあり 連続してブックの共有解除処理をしていますが 確認画面での手作業が入ります。 確認画面で[はい(Y)]を押下する作業も同時に自動化する方法が あればご教授下さい。 使用環境 OS:WindowsXP Excel2003

  • 保護の解除(共有保護)

    質問させていただきます。 エクセル初心者です。 シート(1)にシートの保護をかけてから、別のシート(2)にて 共有ブックの保護をかけてしまったらシート(1)の保護が解除 出来なくなってしまいました。ツールメニューから「シートの保護」「ブックの保護」は選択できなくなってしまいました。 すべて解除し保護をかける前の状態に戻すことは可能でしょうか?

  • VBAでのブック・シートの保護・解除について

    エクセル2010のVBAでのブック、シートの保護&解除の方法について教えて頂きたく、 質問させて頂きます。 消されては困るシートや数式がある関係で、ブックオープン時にVBAでブックとシートにそれぞれパスワードをかけて保護しています。 VBAではシートの削除、作成、コピーなどを行っているため、VBA実行時のみ、保護を解除させるようにしたいと思います。 ただ、対象のシート自体にも入力したい項目があるため、その箇所については保護を解除しておく必要があります。 そして、VBA実行後、再度、その箇所以外にパスワードで保護をかけ直します。 イメージとしては下記のような流れになります。 対象ブック:ブックA 対象シート:シート1 パスワード:1234(それぞれ) 常時保護を解除しておきたいセル:range("A6:H106") 1.(オープン時には、)ブック保護&特定のセル以外のシート保護 2.VBA実行時には全ての保護解除 3.VBA終了時に、1の状態に戻る どうぞよろしくお願い致します。

女性や社会への不満
このQ&Aのポイント
  • 奢られるのを当然と思っている。男性は女性より多くお金を出すものだよね、と思っている。
  • 理由を言わずに不機嫌になることに罪悪感を感じない
  • 男女の付き合いにおいてお互いに納得の行く形で今後接していきたいため、お手数ですがご回答へのご助力をお願いします。
回答を見る

専門家に質問してみよう