Добрый день! Имеется книга, где каждый лист ссылается на предыдущий лист. Необходимо сохранить текущий лист в отдельный файл: 1. заменой формулы на значение 2. чтобы формулы в исходном листе (книге) сохранились 3. что бы автоматически сохранялось в папке с определенным названием Я поискав на формуах собрал макрос, чтобы он выполнял пунктам 1 и 3, но не могу доделать, чтобы не убивались формулы в исходной книге. [vba]
Код
Sub CommandButton1_Click() Dim smallrng As Range ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value Dim FileN$ FileN = ThisWorkbook.Path & "\" & "Суточный рапорт_" & Range("V2") & ".xls" ActiveSheet.Copy ActiveWorkbook.SaveCopyAs FileN ActiveWorkbook.Close SaveChanges:=False MsgBox "Текущий лист сохранен в новой книге" & FileN End Sub
[/vba] Я так понимаю, что необходимо сначала копировать всю книгу, затем уже присваивать значения и сохранять в отдельный файл лист. Но я не силен с VBA и не знаю как надо это делать.
Добрый день! Имеется книга, где каждый лист ссылается на предыдущий лист. Необходимо сохранить текущий лист в отдельный файл: 1. заменой формулы на значение 2. чтобы формулы в исходном листе (книге) сохранились 3. что бы автоматически сохранялось в папке с определенным названием Я поискав на формуах собрал макрос, чтобы он выполнял пунктам 1 и 3, но не могу доделать, чтобы не убивались формулы в исходной книге. [vba]
Код
Sub CommandButton1_Click() Dim smallrng As Range ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value Dim FileN$ FileN = ThisWorkbook.Path & "\" & "Суточный рапорт_" & Range("V2") & ".xls" ActiveSheet.Copy ActiveWorkbook.SaveCopyAs FileN ActiveWorkbook.Close SaveChanges:=False MsgBox "Текущий лист сохранен в новой книге" & FileN End Sub
[/vba] Я так понимаю, что необходимо сначала копировать всю книгу, затем уже присваивать значения и сохранять в отдельный файл лист. Но я не силен с VBA и не знаю как надо это делать. rus102
Сообщение отредактировал rus102 - Пятница, 20.03.2020, 08:18
Kuzmich, К сожалению не помогает, формулы в исходном файле остались, а вот значений в конечном файле нет, т.к. они ссылались на предыдущие листы. Сделал так: [vba]
Код
Sub CommandButton1_Click() Dim smallrng As Range Dim FileN$ FileN = ThisWorkbook.Path & "\" & "Суточный рапорт_" & Range("V2") & ".xls" ActiveSheet.Copy ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value ActiveWorkbook.SaveCopyAs FileN ActiveWorkbook.Close SaveChanges:=False MsgBox "Текущий лист сохранен в новой книге" & FileN End Sub
[/vba]
Kuzmich, К сожалению не помогает, формулы в исходном файле остались, а вот значений в конечном файле нет, т.к. они ссылались на предыдущие листы. Сделал так: [vba]
Код
Sub CommandButton1_Click() Dim smallrng As Range Dim FileN$ FileN = ThisWorkbook.Path & "\" & "Суточный рапорт_" & Range("V2") & ".xls" ActiveSheet.Copy ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value ActiveWorkbook.SaveCopyAs FileN ActiveWorkbook.Close SaveChanges:=False MsgBox "Текущий лист сохранен в новой книге" & FileN End Sub
RAN, как есть говорю. наверное, это из-за того что у меня не обычные формулы, а ссылки на предыдущий лист при помощи функции ДВССЫЛ. Пример во вложении. Помогите пожалуйста
RAN, как есть говорю. наверное, это из-за того что у меня не обычные формулы, а ссылки на предыдущий лист при помощи функции ДВССЫЛ. Пример во вложении. Помогите пожалуйста rus102
RAN, получается что нерешаема задача? То есть не получиться создать временную копию книги с UDF и там применить формулу для присваивания значений, а затем оттуда вытащить лист?
RAN, получается что нерешаема задача? То есть не получиться создать временную копию книги с UDF и там применить формулу для присваивания значений, а затем оттуда вытащить лист?rus102
Sub CommandButton1_Click() Dim smallrng As Range Dim FileN$, wb As Workbook FileN = ThisWorkbook.Path & "\" & "Суточный рапорт_" & Range("B1") & ".xlsm" ThisWorkbook.SaveCopyAs FileN Set wb = Workbooks.Open(FileN) ActiveSheet.DrawingObjects.Delete 'удаление всех кнопок ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value ActiveSheet.Copy wb.Close SaveChanges:=False Kill FileN Mid(FileN, Len(FileN), 1) = "x" ActiveWorkbook.SaveAs FileN, 51 ActiveWorkbook.Close SaveChanges:=False MsgBox "Текущий лист сохранен в новой книге" & FileN End Sub
[/vba]
Почему нет?
[vba]
Код
Sub CommandButton1_Click() Dim smallrng As Range Dim FileN$, wb As Workbook FileN = ThisWorkbook.Path & "\" & "Суточный рапорт_" & Range("B1") & ".xlsm" ThisWorkbook.SaveCopyAs FileN Set wb = Workbooks.Open(FileN) ActiveSheet.DrawingObjects.Delete 'удаление всех кнопок ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value ActiveSheet.Copy wb.Close SaveChanges:=False Kill FileN Mid(FileN, Len(FileN), 1) = "x" ActiveWorkbook.SaveAs FileN, 51 ActiveWorkbook.Close SaveChanges:=False MsgBox "Текущий лист сохранен в новой книге" & FileN End Sub