Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Копирование некоторых листов в новую книгу с заменой типов я - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Копирование некоторых листов в новую книгу с заменой типов я
akaDemik Дата: Вторник, 29.09.2015, 11:07 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 67
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Доброго времени суток!
С формулами я более-менее знаком, но понадобилась рутинная работа, с которой должен справляться макрос.
Задача: В книге 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]
Код
cell.Formula = cell.Value
[/vba]

Автор - akaDemik
Дата добавления - 29.09.2015 в 11:07
Manyasha Дата: Вторник, 29.09.2015, 13:15 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 901 ±
Замечаний: 0% ±

Excel 2010, 2016
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]


ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщение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]

Автор - Manyasha
Дата добавления - 29.09.2015 в 13:15
akaDemik Дата: Вторник, 29.09.2015, 14:40 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 67
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
"Лист1", "Лист2"

т.к. у меня листы переименованы, с начала выдало ошибку, потом понял что надо подправить название в коде)
благодарю
осталось понять почему выдавало ошибку
[vba]
Код
Run-time error '1004'
Method 'Copy' of object'_Worksheet' failed
[/vba]
 
Ответить
Сообщение
"Лист1", "Лист2"

т.к. у меня листы переименованы, с начала выдало ошибку, потом понял что надо подправить название в коде)
благодарю
осталось понять почему выдавало ошибку
[vba]
Код
Run-time error '1004'
Method 'Copy' of object'_Worksheet' failed
[/vba]

Автор - akaDemik
Дата добавления - 29.09.2015 в 14:40
Manyasha Дата: Вторник, 29.09.2015, 15:08 | Сообщение № 4
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 901 ±
Замечаний: 0% ±

Excel 2010, 2016
akaDemik, Ваш исходный макрос у меня такой ошибки не выдавал. :o


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеakaDemik, Ваш исходный макрос у меня такой ошибки не выдавал. :o

Автор - Manyasha
Дата добавления - 29.09.2015 в 15:08
akaDemik Дата: Вторник, 29.09.2015, 15:49 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 67
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Manyasha, странно...
тут еще появилась новая вводная, т.к. функция YYYY-MM-DD подставляет текущий день, то иногда надо будет прописать дату с ячейки, при этом эта ячейка состоит из формулы, ее также надо преобразовать в значение
 
Ответить
СообщениеManyasha, странно...
тут еще появилась новая вводная, т.к. функция YYYY-MM-DD подставляет текущий день, то иногда надо будет прописать дату с ячейки, при этом эта ячейка состоит из формулы, ее также надо преобразовать в значение

Автор - akaDemik
Дата добавления - 29.09.2015 в 15:49
akaDemik Дата: Вторник, 29.09.2015, 16:23 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 67
Репутация: 0 ±
Замечаний: 0% ±

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

сам задал вопрос, сам и отвечаю))
[vba]
Код
ActiveWorkbook.SaveAs wb.Path & "\" & Format(wb.Sheets("Лист1").Range("G3")) & "_" & s.Name & ".xlsx"
[/vba]
макрос понял что надо подставить результат, а не формулу
 
Ответить
Сообщение
надо будет прописать дату с ячейки, при этом эта ячейка состоит из формулы, ее также надо преобразовать в значение

сам задал вопрос, сам и отвечаю))
[vba]
Код
ActiveWorkbook.SaveAs wb.Path & "\" & Format(wb.Sheets("Лист1").Range("G3")) & "_" & s.Name & ".xlsx"
[/vba]
макрос понял что надо подставить результат, а не формулу

Автор - akaDemik
Дата добавления - 29.09.2015 в 16:23
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!