Добрый день!
Знаю, как скопировать лист в новую книгу с переносом всех значений и защитить ячейки от изменений (спасибо планете!):
Dim wsSh As Worksheet
Dim NewWb As Workbook, asArr(), li As Long
DateString = Format(Now, "dd-mm-yy hh-mm-ss")
Application.ScreenUpdating = False
For Each wsSh In Sheets(Array("Заявление"))
If wsSh.Visible <> -1 Then ReDim Preserve asArr(li): asArr(li) = wsSh.Name: li = li + 1: wsSh.Visible = xlSheetVisible
Next wsSh
Sheets(Array("Заявление")).Copy
Set NewWb = ActiveWorkbook
For Each wsSh In NewWb.Worksheets
With wsSh
.Visible = True
.UsedRange.Value = .UsedRange.Value
.Cells.Locked = True
.Cells.FormulaHidden = True
.Protect Password:=MyPassword, DrawingObjects:=True, Contents:=True, Scenarios:=True
.EnableSelection = xlNoSelection
End With
Next
NewWb.SaveAs Filename:=ActiveWorkbook.Path & DateString & "_Заявление.xls"
Application.ScreenUpdating = True
ThisWorkbook.Close SaveChanges:=False
А мне надо, чтобы при копировании листа диапазон [A1:Z266] переносился в виде значений (а не формул) с защитой от изменений, а все остальное, где хоть что-то есть, с сохранением формул и без защиты. Подскажите, пожалуйста, как это сделать?
Знаю, как скопировать лист в новую книгу с переносом всех значений и защитить ячейки от изменений (спасибо планете!):
Dim wsSh As Worksheet
Dim NewWb As Workbook, asArr(), li As Long
DateString = Format(Now, "dd-mm-yy hh-mm-ss")
Application.ScreenUpdating = False
For Each wsSh In Sheets(Array("Заявление"))
If wsSh.Visible <> -1 Then ReDim Preserve asArr(li): asArr(li) = wsSh.Name: li = li + 1: wsSh.Visible = xlSheetVisible
Next wsSh
Sheets(Array("Заявление")).Copy
Set NewWb = ActiveWorkbook
For Each wsSh In NewWb.Worksheets
With wsSh
.Visible = True
.UsedRange.Value = .UsedRange.Value
.Cells.Locked = True
.Cells.FormulaHidden = True
.Protect Password:=MyPassword, DrawingObjects:=True, Contents:=True, Scenarios:=True
.EnableSelection = xlNoSelection
End With
Next
NewWb.SaveAs Filename:=ActiveWorkbook.Path & DateString & "_Заявление.xls"
Application.ScreenUpdating = True
ThisWorkbook.Close SaveChanges:=False
А мне надо, чтобы при копировании листа диапазон [A1:Z266] переносился в виде значений (а не формул) с защитой от изменений, а все остальное, где хоть что-то есть, с сохранением формул и без защиты. Подскажите, пожалуйста, как это сделать?