• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:フォルダ内の複数ブック・シートを一括保護/解除する)

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

このQ&Aのポイント
  • 複数のExcelファイルが含まれるフォルダ内の全てのブック・シートの保護/解除を一括して行うマクロを作成したい
  • 現在はマクロ用ブックと処理対象のブックを別フォルダに分けているが、同一フォルダで処理したい
  • VBA初心者であり、ThisWorkbook.Pathを使用して同一フォルダ内のブック/シートに対して処理する方法がわからない

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

  • ベストアンサー
  • wildcard
  • ベストアンサー率54% (54/100)
回答No.1

こんな感じでどうでしょうか? '------------------------------------------------- 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 = ThisWorkbook.Path & "\" '←変更 With CreateObject("Scripting.FileSystemObject") For Each myFile In .GetFolder(openFilePath).Files If .GetExtensionName(myFile.Path) = "xls" And openFilePath & ThisWorkbook.Name <> myFile.Path 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 '------------------------------------------------- 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 = ThisWorkbook.Path & "\" '←変更 With CreateObject("Scripting.FileSystemObject") For Each myFile In .GetFolder(openFilePath).Files If .GetExtensionName(myFile.Path) = "xls" And openFilePath & ThisWorkbook.Name <> myFile.Path 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 '-------------------------------------------------

komakoma5050
質問者

お礼

試してみたところ、保護/解除共に希望通りに動きました! 勉強不足を痛感しています。 本当にありがとうございました。

関連するQ&A