Patrickは、Excelが保護されたビューでブックを開かないようにする方法を考えています。彼は、誰でもファイルを開いて読み取り、編集できるように、ファイルを通常のビューで開くことを望んでいます。

答えは、「保護されたビュー」の意味に完全に依存します。ワークシートを保護しないようにする場合は、マクロを使用して比較的簡単に行うことができます。 Excelが「保護されたビュー」と呼んでいるものについて本当に話しているのであれば、それはまったく別の状況です。

ブックが保護されていないことを確認して、開いたときに編集できるようにする場合は、これと同じくらい単純なマクロでうまくいく可能性があります。

Private Sub Workbook_Open()

ThisWorkbook.Unprotect End Sub

もちろん、これによって個々のワークシートの保護が解除されるわけではありません。ブック内の各ワークシートを循環する必要があるため、これにはさらにいくつかの手順が含まれます。次のマクロは、シートを保護しないワークブックのThisWorkbookモジュールに配置する必要があります。

Private Sub Workbook_BeforeClose(Cancel As Boolean)

' Reprotect sheets that were protected on open workbook     Call ReprotectSheets ' Save changes in ThisWorkbook     ThisWorkbook.Save End Sub
Private Sub Workbook_Open()

' Unprotect all sheets in this workbook     Call UnprotectAllSheets End Sub

マクロは、実際の作業を行う他のマクロを呼び出すだけであることに注意してください。これらの他のマクロは、ブックの標準モジュールに配置できます。

Public arrProtectedSheets()



Sub ReprotectSheets()

' Reprotect worksheets that were protected on WorkbookOpen     Dim i As Integer

For i = LBound(arrProtectedSheets) To UBound(arrProtectedSheets)

ThisWorkbook.Worksheets(arrProtectedSheets(i)).Protect     Next i End Sub
Sub UnprotectAllSheets()

' Unprotect all worksheets in this workbook     Dim wks As Object     Dim i As Integer

i = 0     For Each wks In ThisWorkbook.Sheets         If IsSheetProtected(wks) Then             ' Remember names of protected sheets in order             ' to reprotect them on WorkbookClose             ReDim Preserve arrProtectedSheets(i)

arrProtectedSheets(i) = wks.Name             i = i + 1             ' Unprotect sheet             wks.Unprotect         End If     Next wks End Sub
Private Function IsSheetProtected(ByRef wks As Excel.Worksheet) As Boolean ' Function returns TRUE If Worksheetsheet Is Protected     With wks         IsSheetProtected = (.ProtectContents Or _           .ProtectScenarios Or .ProtectDrawingObjects)

End With End Function

UnprotectAllSheetsマクロの背後にある考え方は、ワークブック内の各ワークシートをステップスルーし、保護されている場合(IsSheetProtectedマクロで決定)、ワークシートの名前が配列に格納されるというものです。次に、配列の内容がReprotectSheetsマクロで使用され、これらのワークシートが再度保護されます。もちろん、このアプローチは、保護されたワークシートのいずれにもパスワードが関連付けられていないことを前提としています。

実際に実際の「保護されたビュー」を確認したい場合

オフになっている、それは別の話です。保護されたビューの設定は、セキュリティセンターでシステムごとに制御されます。次の手順で設定を確認できます:

。リボンの `link:/ excelribbon-Displaying_Excels_Developer_Tab [Developertab]`を表示します。

。 [コード]グループの[マクロセキュリティ]をクリックします。 Excelに[セキュリティセンター]ダイアログボックスが表示されます。

。ダイアログボックスの左側で、[保護されたビュー]をクリックします。 (図1を参照)

使用可能な実際の保護ビュー設定は、使用しているExcelのバージョンによって異なります。前述のように、これらの設定はシステムレベルで制御されます。それらは、ワークブックごとに処理されません。結果として、マクロコードで回避することはできません。可能であれば、開いているブックに含まれているコードに対してシステムが完全に脆弱になります。以前のバージョンのOffice製品で一般的だったマクロウイルスの時代に戻ります。

保護されたビューの設定の動作に関する追加情報は、次のMicrosoftWebサイトにあります。

https://support.office.com/en-us/article/what-is-protected-view-d6f09ac7-e6b9-4495-8e43-2bbcdbcb6653?ocmsassetID=HA010355931&CorrelationId=fce5243e-6c41-4865-89e9-530f125ea252&ui=en-US&rs=en-US&ad=US

ブックが保護されたビューで開くかどうかは、ユーザーのシステム設定によって異なります。つまり、開く内容の制御は完全に個々のユーザーに任されており、ブックの作成者が「強制」することはできません。ただし、これによる影響を軽減する方法はいくつかあり、それらは信頼と関係があります。 [セキュリティセンター]ダイアログボックスの左側には、ブックに関連してこれを制御する3つの設定があることに注意してください。

信頼できる発行元。*この領域にリストされている発行元のワークブックは信頼されており、保護されたビューをバイパスして直接開きます。

信頼できる場所。*この領域にリストされている場所に保存されているブックは信頼されており、保護されたビューをバイパスして直接開きます。

信頼できるドキュメント。*この領域に記載されている個々のブックは信頼されており、保護されたビューをバイパスして直接開きます。

ブックの場合、保護されたビューをバイパスするには、信頼できる発行者であるか、ブックを信頼できる場所に保存するか、システム上で信頼できるドキュメントとして記録する必要があります。

これらの設定はすべてユーザーの制御下にあり、マクロコードを使用して変更することはできません。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

link:/ excelribbon-ExcelTipsMacros [ここをクリックして、新しいブラウザタブでその特別なページを開きます]

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(12873)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice365のExcelに適用されます。