Доброго времени суток! С формулами я более-менее знаком, но понадобилась рутинная работа, с которой должен справляться макрос. Задача: В книге 10 листов, 6 из них необходимо скопировать в новые книги, каждая отдельным файлом, после этого необходимо заменить тип ячеек с "формула" на "значение" в интернетах нашел макрос [vba]
Код
Sub SplitSheets2() Dim s As Worksheet Set wb = ActiveWorkbook For Each s In wb.Worksheets s.Copy ActiveWorkbook.SaveAs wb.Path & "\" & s.Name & Format(Now, "DD-MM-YYYY") & ".xlsx"
Next End Sub
[/vba] в принципе он с задачей справился, но наполовину т.к. надо в название файла подставлять немного другой формат даты не "ДД-ММ-ГГГГ" а "ГГГГ-ММ-ДД" + название Листа. В идеале надо не копировать все листы, а только 6 из 10 В конце данного макроса выбивает еще ошибку
Цитата
Run-time error '1004' Method 'Copy' of object'_Worksheet' failed
Еще не могу найти нужный пример выбора всех ячеек на листе чтобы применить [vba]
Код
cell.Formula = cell.Value
[/vba]
Доброго времени суток! С формулами я более-менее знаком, но понадобилась рутинная работа, с которой должен справляться макрос. Задача: В книге 10 листов, 6 из них необходимо скопировать в новые книги, каждая отдельным файлом, после этого необходимо заменить тип ячеек с "формула" на "значение" в интернетах нашел макрос [vba]
Код
Sub SplitSheets2() Dim s As Worksheet Set wb = ActiveWorkbook For Each s In wb.Worksheets s.Copy ActiveWorkbook.SaveAs wb.Path & "\" & s.Name & Format(Now, "DD-MM-YYYY") & ".xlsx"
Next End Sub
[/vba] в принципе он с задачей справился, но наполовину т.к. надо в название файла подставлять немного другой формат даты не "ДД-ММ-ГГГГ" а "ГГГГ-ММ-ДД" + название Листа. В идеале надо не копировать все листы, а только 6 из 10 В конце данного макроса выбивает еще ошибку
Цитата
Run-time error '1004' Method 'Copy' of object'_Worksheet' failed
Еще не могу найти нужный пример выбора всех ячеек на листе чтобы применить [vba]
Sub SplitSheets2() Dim s As Worksheet Set wb = ActiveWorkbook For Each s In wb.Sheets(Array("Лист1", "Лист2")) 'остальные листы допишите s.Copy ActiveSheet.UsedRange = ActiveSheet.UsedRange.Value ActiveWorkbook.SaveAs wb.Path & "\" & Format(Now, "YYYY-MM-DD") & "-" & s.Name & ".xlsx" Next End Sub
[/vba]
akaDemik, вот так попробуйте: [vba]
Код
Sub SplitSheets2() Dim s As Worksheet Set wb = ActiveWorkbook For Each s In wb.Sheets(Array("Лист1", "Лист2")) 'остальные листы допишите s.Copy ActiveSheet.UsedRange = ActiveSheet.UsedRange.Value ActiveWorkbook.SaveAs wb.Path & "\" & Format(Now, "YYYY-MM-DD") & "-" & s.Name & ".xlsx" Next End Sub
т.к. у меня листы переименованы, с начала выдало ошибку, потом понял что надо подправить название в коде) благодарю осталось понять почему выдавало ошибку [vba]
Код
Run-time error '1004' Method 'Copy' of object'_Worksheet' failed
т.к. у меня листы переименованы, с начала выдало ошибку, потом понял что надо подправить название в коде) благодарю осталось понять почему выдавало ошибку [vba]
Код
Run-time error '1004' Method 'Copy' of object'_Worksheet' failed
Manyasha, странно... тут еще появилась новая вводная, т.к. функция YYYY-MM-DD подставляет текущий день, то иногда надо будет прописать дату с ячейки, при этом эта ячейка состоит из формулы, ее также надо преобразовать в значение
Manyasha, странно... тут еще появилась новая вводная, т.к. функция YYYY-MM-DD подставляет текущий день, то иногда надо будет прописать дату с ячейки, при этом эта ячейка состоит из формулы, ее также надо преобразовать в значениеakaDemik