[VBA] копирование в папку без формул

Zarubiant

Участник
Сообщения
80
Реакции
0
Нужен макрос vba, копирующий лист [имя листа] превращая все формулы в значения, пусть сохранения нового файла указан в ячейке H1
 
Нужен макрос vba, копирующий лист [имя листа] превращая все формулы в значения, пусть сохранения нового файла указан в ячейке H1
Для создания макроса VBA, который будет копировать лист, преобразуя формулы в значения и сохраняя новый файл с указанием имени в ячейке H1, вам понадобится следующий код:

Код:
Sub КопированиеЛистаСохранениеВЗначениях()
    Dim НовыйЛист As Worksheet
    Dim НовыйФайл As Workbook
    Dim ИмяФайла As String

    ' Копирование листа
    ThisWorkbook.Sheets("Имя листа").Copy
    Set НовыйЛист = ActiveSheet

    ' Преобразование формул в значения
    НовыйЛист.UsedRange.Value = НовыйЛист.UsedRange.Value

    ' Получение имени файла из ячейки H1
    ИмяФайла = ThisWorkbook.Sheets("Имя листа").Range("H1").Value

    ' Сохранение нового файла
    Set НовыйФайл = Workbooks.Add
    НовыйЛист.Copy Before:=НовыйФайл.Sheets(1)
    Application.DisplayAlerts = False
    НовыйФайл.SaveAs ИмяФайла
    НовыйФайл.Close SaveChanges:=True
    Application.DisplayAlerts = True

    ' Очистка памяти
    Set НовыйЛист = Nothing
    Set НовыйФайл = Nothing
End Sub

Пожалуйста, замените "Имя листа" на фактическое имя листа в вашем файле. После запуска этого макроса, он скопирует указанный лист, преобразует формулы в значения, сохранит новый файл с именем, указанным в ячейке H1. Не забудьте сохранить свой файл с расширением .xlsm, чтобы сохранить макрос.
 
и добавь, чтобы в новом файле удалялись макросы
Для того чтобы в новом файле удалялись макросы, вам нужно добавить дополнительный код в ваш макрос. Вот обновленный код:

Код:
Sub КопированиеЛистаСохранениеВЗначениях()
    Dim НовыйЛист As Worksheet
    Dim НовыйФайл As Workbook
    Dim ИмяФайла As String

    ' Копирование листа
    ThisWorkbook.Sheets("Имя листа").Copy
    Set НовыйЛист = ActiveSheet

    ' Преобразование формул в значения
    НовыйЛист.UsedRange.Value = НовыйЛист.UsedRange.Value

    ' Получение имени файла из ячейки H1
    ИмяФайла = ThisWorkbook.Sheets("Имя листа").Range("H1").Value

    ' Сохранение нового файла
    Set НовыйФайл = Workbooks.Add
    НовыйЛист.Copy Before:=НовыйФайл.Sheets(1)
    Application.DisplayAlerts = False
    НовыйФайл.SaveAs ИмяФайла
    НовыйФайл.Close SaveChanges:=True
    Application.DisplayAlerts = True

    ' Удаление макросов из нового файла
    Dim Макрос As VBComponent
    For Each Макрос In НовыйФайл.VBProject.VBComponents
        НовыйФайл.VBProject.VBComponents.Remove Макрос
    Next Макрос

    ' Очистка памяти
    Set НовыйЛист = Nothing
    Set НовыйФайл = Nothing
End Sub

После запуска этого обновленного макроса, он будет копировать указанный лист, преобразовывать формулы в значения, сохранять новый файл с именем из ячейки H1 и удалять все макросы из нового файла. Не забудьте сохранить свой файл с расширением .xlsm, чтобы сохранить макрос.
 
Назад
Сверху Снизу