Рецепт

Защитить лист так, чтобы макрос всё ещё писал

После Protect запись из VBA даёт 1004.

Protect с UserInterfaceOnly:=True разрешает коду писать в Locked-ячейки, пока сессия открыта. После закрытия книги флаг сбрасывается — накладывайте защиту в Workbook_Open.

Код

Private Sub Workbook_Open()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("Отчёт")
    ws.Protect Password:="demo", UserInterfaceOnly:=True, Contents:=True
End Sub

Связанные члены API