Как заархивировать формулы нужного рабочего листа, и при необходимости, восстановить эти формулы?
Для того, чтобы создать "архив" формул нужного рабочего листа, можно сохранить формулы и адреса ячеек, которые содержат эти формулы, например, в текстовый файл. Для этого можно воспользоваться процедурой ExportFormulas, а для того, чтобы восстановить сохранённые формулы, достаточно всего лишь воспользоваться процедурой ImportFormulas.
Private Sub ExportFormulas() iFormulas$ = ThisWorkbook.Path & "\Formulas.txt" If Table.ProtectContents = True Then MsgBox "Рабочий лист защищён", _ vbCritical, "Ошибка пользователя !!!" Exit Sub End If On Error GoTo ErrHandler Dim iSource As Range, iCell As Range Set iSource = Table.UsedRange.SpecialCells(xlFormulas) Open iFormulas$ For Output As #1 For Each iCell In iSource Write #1, iCell.Address, iCell.Formula Next Close #1 ErrHandler: If Err.Number <> 0 Then MsgBox Err.Description, vbCritical, Err.Number End If End Sub Private Sub ImportFormulas() iFormulas$ = ThisWorkbook.Path & "\Formulas.txt" If Dir(iFormulas$) = "" Then MsgBox "Архивный файл изволит отсутствовать", _ vbCritical, "Ошибка пользователя !!!" Exit Sub End If If Table.ProtectContents = True Then MsgBox "Рабочий лист защищён", _ vbCritical, "Ошибка пользователя !!!" Exit Sub End If With Application .EnableCancelKey = xlDisabled .ScreenUpdating = False .DisplayAlerts = False .EnableEvents = False .Calculation = xlManual Open iFormulas$ For Input As #1 Do While Not EOF(1) Input #1, iAddress$, iFormula$ Table.Range(iAddress$) = iFormula$ Loop Close #1 If MsgBox("Вы хотите сохранить изменения ?", _ vbYesNo, "") = vbYes Then ThisWorkbook.Save .Calculation = xlAutomatic .EnableEvents = True .DisplayAlerts = True .ScreenUpdating = True .EnableCancelKey = xlInterrupt End With End Sub
Предполагается, что:
Table - это кодовое(программное) имя рабочего листа (см.пример), формулы которого необходимо сохранить. Использование именно кодового имени не носит обязательного характера, поэтому, Вы вправе использовать и другие варианты, например, имя листа или его индекс(номер).
Для экспорта и импорта формул необходимо, чтобы рабочий лист не был защищён, т.к. в противном случае, при экспорте, это может привести к тому, что скрытые формулы не будут заархивированы.
Данный пример не предназначен для работы с формулами массива и именованными формулами, однако, он позволит восстановить формулу и получить правильный результат вычислений, если именованная формула не была удалена и текст этой формулы не был изменён.