Как выделить и копировать по 10 строк?

Программирование на Visual Basic for Applications
Сергей11
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 25.01.2015 (Вс) 22:44

Как выделить и копировать по 10 строк?

Сообщение Сергей11 » 25.01.2015 (Вс) 22:47

Здравствуйте. Подскажите как Excel документ в котором 10000 строк разбить по 10 строк и сохранить каждые 10 строк в отдельный файл. Нашел такой код который все сохраняет, но только по одной строке:

Код: Выделить всё
Sub beereator()
Application.ScreenUpdating = False
For i = 1 To Cells.SpecialCells(xlCellTypeLastCell).Row
Rows(i).Select
Selection.Cut
Workbooks.Add
ActiveSheet.Paste
ActiveWorkbook.SaveAs Filename:= _
"C:\Users\Desktop\b" & i & ".csv", FileFormat:=xlNormal 'файлы имунуются b1, b2, b3 и кладутся в корневой каталог
ActiveWorkbook.Close
Next
Application.ScreenUpdating = False
End Sub

Подскажите пожалуйста как исправить чтобы сохранял не по одной строке, а например 10 или 20 строк в один файл.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Как выделить и копировать по 10 строк?

Сообщение alibek » 26.01.2015 (Пн) 8:59

В цикле добавить Step.
В Rows указывать диапазон.
Lasciate ogni speranza, voi ch'entrate.

Сергей11
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 25.01.2015 (Вс) 22:44

Re: Как выделить и копировать по 10 строк?

Сообщение Сергей11 » 26.01.2015 (Пн) 11:26

Спасибо за ответ. Разобрался. Получилось так:
Код: Выделить всё
Sub beereator()
Application.ScreenUpdating = False
For i = 1 To Cells.SpecialCells(xlCellTypeLastCell).Row Step 10
    Rows(i & ":" & i + 9).Select
    Selection.Cut
    Workbooks.Add
    ActiveSheet.Paste
    ActiveWorkbook.SaveAs Filename:= _
        "C:\Users\list" & i & ".csv", FileFormat:=xlNormal 'файлы имунуются b1, b2, b3 и кладутся в корневой каталог
    ActiveWorkbook.Close
Next
Application.ScreenUpdating = False
End Sub

Только никак не пойму как правильно написать чтобы каждый документ именовался по по порядку: list1.csv, list2.csv,list3.csv и т.д. Сейчас в конце добавляется 1. Получается list1.csv, list11.csv, list21.csv, list31.csv и т.д

Vi
Постоялец
Постоялец
 
Сообщения: 739
Зарегистрирован: 25.01.2002 (Пт) 11:03
Откуда: Россия, Ижевск

Re: Как выделить и копировать по 10 строк?

Сообщение Vi » 26.01.2015 (Пн) 14:06

Сергей11 писал(а):
Код: Выделить всё
    ActiveWorkbook.SaveAs Filename:= _
        "C:\Users\list" & i & ".csv", FileFormat:=xlNormal 'файлы имунуются b1, b2, b3 и кладутся в корневой каталог
Только никак не пойму как правильно написать чтобы каждый документ именовался по по порядку: list1.csv, list2.csv,list3.csv и т.д. Сейчас в конце добавляется 1. Получается list1.csv, list11.csv, list21.csv, list31.csv и т.д


"C:\Users\list" & (i\10+1) & ".csv",
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! (с) КВН

Сергей11
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 25.01.2015 (Вс) 22:44

Re: Как выделить и копировать по 10 строк?

Сообщение Сергей11 » 26.01.2015 (Пн) 15:36

Vi писал(а):
Сергей11 писал(а):
Код: Выделить всё
    ActiveWorkbook.SaveAs Filename:= _
        "C:\Users\list" & i & ".csv", FileFormat:=xlNormal 'файлы имунуются b1, b2, b3 и кладутся в корневой каталог
Только никак не пойму как правильно написать чтобы каждый документ именовался по по порядку: list1.csv, list2.csv,list3.csv и т.д. Сейчас в конце добавляется 1. Получается list1.csv, list11.csv, list21.csv, list31.csv и т.д


"C:\Users\list" & (i\10+1) & ".csv",


Спасибо за ответ. Разобрался.

Сергей11
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 25.01.2015 (Вс) 22:44

Re: Как выделить и копировать по 10 строк?

Сообщение Сергей11 » 28.01.2015 (Ср) 14:38

Можете еще подсказать насчет формата. Если ставлю так
Код: Выделить всё
Sub beereator()
Application.ScreenUpdating = False
For i = 1 To Cells.SpecialCells(xlCellTypeLastCell).Row Step 200
    Rows(i & ":" & i + 200).Select
    Selection.Cut
    Workbooks.Add
    ActiveSheet.Paste
    ActiveWorkbook.SaveAs Filename:= "C:\Users\list" & i \ 200 & ".csv", FileFormat:=6 'файлы имунуются b1, b2, b3 и кладутся в корневой каталог
    ActiveWorkbook.Close
Next
Application.ScreenUpdating = False
End Sub

то постоянно вылазит окно "Вы хотите сохранить изменения в файле.. ". Как сделать чтобы это окно не вылазило?

pronto
Постоялец
Постоялец
 
Сообщения: 597
Зарегистрирован: 04.12.2005 (Вс) 6:20
Откуда: Владивосток

Re: Как выделить и копировать по 10 строк?

Сообщение pronto » 28.01.2015 (Ср) 17:37

Application.DisplayAlerts = False
' полезные действия
Application.DisplayAlerts = True
O, sancta simplicitas!

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 28.01.2015 (Ср) 22:10

Код: Выделить всё
ActiveWorkbook.Close savechanges:=False


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

    TopList