mail mail
Нужен макрос для Excel?
Сделайте заказ прямо сейчас!
Ищете готовое решение?
Выбирайте и покупайте!
У вас есть интернет-магазин?
Настроим парсер под любой сайт!

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

Данная функция формирует (создаёт) новую книгу 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, НовыйПутьКФайлу$)

Комментарии

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

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

мне очень нужно это программа

При настройке листа "файл"=>"параметры страницы" можно задать принтер, и в его свойствах сделать настройки печати текущего листа. После сохранения файла, эти настройки куда то прописываются, привязанные только к этому листу. Если посмотреть файл .xls текстовом виде, то там можно увидеть кусок текста, с сохраненными настройками принтера.
Конкретно: имя принтера и включенный дуплекс.
вопрос: как добраться до этих свойств? , потому-что в .PageSetup этого нет, а при большом количестве создаваемых файлов, которые в автомате (.PrintOut) идут на печать, - руками все делать - проблема.
Спасибо!

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

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

Sub ПримерИспользованияФункции_NewWorksheet()
    Dim sh As Worksheet
    ПутьСоздаваемогоФайла$ = "c:\test.xls"
 
    ' активный лист будет служить шаблоном для нового файла
    Set sh = NewWorksheet(ActiveSheet, ПутьСоздаваемогоФайла$)
 
    sh.Name = "Имя нового листа"    ' переименовываем лист в новой книге
    sh.Parent.Close True    ' закрываем новый файл с сохранением изменений
End Sub

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

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

Содержание этого поля является приватным и не предназначено к показу.
CAPTCHA
Подтвердите, пожалуйста, что вы - человек:
   ____       _    ___    _   _   _____      _    
/ ___| | | / _ \ | \ | | |___ / / \
| | _ | | | (_) | | \| | |_ \ / _ \
| |___ | |_| | \__, | | |\ | ___) | / ___ \
\____| \___/ /_/ |_| \_| |____/ /_/ \_\
Введите код, изображенный в стиле ASCII-арт.

Не получается применить макрос? Не удаётся изменить код под свои нужды?

Оформите заказ у нас на сайте, не забыв прикрепить примеры файлов, и описать, что и как должно работать.