mail mail

Создание копии листа шаблона, и сохранение в виде нового файла

Данная функция формирует (создаёт) новую книгу Excel с одним листом (на основании шаблона - листа sh_template), после чего сохраняет новый файл по пути NewFilename$

Если путь не указан, сохранения нового файла не происходит.

Function NewWorksheet(ByRef sh_template As Worksheet, Optional ByVal NewFilename$) As Worksheet
    Application.ScreenUpdating = False: On Error Resume Next: Err.Clear
    shtv = sh_template.Visible: sh_template.Visible = xlSheetVisible
    If Err Then MsgBox "Не удалось отобразить лист шаблона", vbCritical, "Ошибка в функции NewWorksheet ": End
    sh_template.Copy: DoEvents
    sh_template.Visible = shtv
    If Err Then MsgBox "Не удалось скопировать лист шаблона", vbCritical, "Ошибка в функции NewWorksheet ": End

    If ActiveWorkbook.Worksheets.Count > 1 Then MsgBox "2: Не удалось скопировать лист шаблона", vbCritical, "Ошибка в функции NewWorksheet ": End
    If ActiveWorkbook.Name = ThisWorkbook.Name Then MsgBox "3: Не удалось скопировать лист шаблона", vbCritical, "Ошибка в функции NewWorksheet ": End

    Set NewWorksheet = ActiveWorkbook.Worksheets(1)
    If NewWorksheet.Name <> sh_template.Name Then MsgBox "4: Не удалось скопировать лист шаблона", vbCritical, "Ошибка в функции NewWorksheet ": End

    Err.Clear: If Len(NewFilename$) Then ActiveWorkbook.SaveAs NewFilename$, xlWorkbookNormal
    If Err Then MsgBox "Не удалось сохранить новый файл по пути" & vbNewLine & _
       """" & NewFilename$ & """", vbExclamation, "Ошибка в функции NewWorksheet "
End Function

Пример использования:

Dim sh As Worksheet: Set sh = NewWorksheet(sht, НовыйПутьКФайлу$)

Комментарии

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

как сделать тоже самое но с 2 листами

Вот пример использования этой функции:
(код самой функции расположите под этим макросом)

Sub ПримерИспользованияФункции_NewWorksheet()
    Dim sh As Worksheet
    ПутьСоздаваемогоФайла$ = "c:\test.xls"

    ' активный лист будет служить шаблоном для нового файла
   Set sh = NewWorksheet(ActiveSheet, ПутьСоздаваемогоФайла$)

    sh.Name = "Имя нового листа"    ' переименовываем лист в новой книге
   sh.Parent.Close True    ' закрываем новый файл с сохранением изменений
End Sub

Не могу запустить

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
CAPTCHA
Подтвердите, пожалуйста, что вы - человек:
4 + 0 =
Решите эту простую математическую задачу и введите результат. Например, для 1+3, введите 4.