Как сохранить рабочие листы в виде отдельных рабочих книг — Visual Basic(Бейсик)

Для того, чтобы сохранить все рабочие листы (в т.ч. и скрытые) в виде отдельных .xls файлов, имена которых будут совпадать с именами рабочих листов — источников, можно использовать нижеприведённый макрос, предварительно указав свою папку для сохранения.

Private Sub WorksheetSaveAsFile()
 
iPath$ = "C:\Мои документы\Архив"
 
If Dir(iPath$, vbDirectory) = "" Then
   MsgBox "Указанная папка " & iPath$ & vbNewLine & _
   "была удалена, перемещена или переименована ", vbExclamation, ""
   Exit Sub
End If
 
On Error GoTo ErrHandler
 
With Application
     .EnableCancelKey = xlDisabled
     .ScreenUpdating = False
     .DisplayAlerts = False
     .EnableEvents = False
     .Calculation = xlManual
     Dim iWorksheet As Worksheet, iHidden As Boolean
     For Each iWorksheet In .ThisWorkbook.Worksheets
         If iWorksheet.Visible <> True Then
            iHidden = True
            iOldVisible& = iWorksheet.Visible
            iWorksheet.Visible = True
         End If
         iWorksheet.Copy
         With .ActiveSheet
              .SaveAs FileName:=iPath$ & "\" & .Name
              .Parent.Close saveChanges:=True
         End With 'Or
         'With .ActiveWorkbook
               '.Close FileName:=iPath$ & "\" & _
               '.ActiveSheet.Name, saveChanges:=True
         'End With
         If iHidden = True Then
            iWorksheet.Visible = iOldVisible&
            iHidden = False 'Not iHidden
         End If
     Next
ErrHandler:
     If Err.Number <> 0 Then
        MsgBox Err.Description, vbCritical, Err.Number
     End If
     .Calculation = xlAutomatic
     .EnableEvents = True
     .DisplayAlerts = True
     .ScreenUpdating = True
     .EnableCancelKey = xlInterrupt
End With
 
End Sub
Если в выбранной папке будет находиться файл с аналогичным именем, то он будет заменён на новый.
Если в рабочем листе есть ячейки, содержащие более 255 символов, то копирование листа приведёт к усечению таких данных до 255 символов (включительно)
Если структура текущей рабочей книги защищена, то копирование скрытых рабочих листов приведёт к возникновению ошибки, которую можно избежать, если добавить соответствующую проверку.

Leave a Comment