Здравствуйте. Подскажите как Excel документ в котором 10000 строк разбить по 10 строк и сохранить каждые 10 строк в отдельный файл. Нашел такой код который все сохраняет, но только по одной строке: [vba]
Код
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\Yura\Desktop\b" & i & ".csv", FileFormat:=xlNormal 'файлы имунуются b1, b2, b3 и кладутся в корневой каталог ActiveWorkbook.Close Next Application.ScreenUpdating = False End Sub
[/vba]
Подскажите пожалуйста как исправить чтобы сохранял не по одной строке, а например 10 или 20 строк в один файл.
Здравствуйте. Подскажите как Excel документ в котором 10000 строк разбить по 10 строк и сохранить каждые 10 строк в отдельный файл. Нашел такой код который все сохраняет, но только по одной строке: [vba]
Код
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\Yura\Desktop\b" & i & ".csv", FileFormat:=xlNormal 'файлы имунуются b1, b2, b3 и кладутся в корневой каталог ActiveWorkbook.Close Next Application.ScreenUpdating = False End Sub
[/vba]
Подскажите пожалуйста как исправить чтобы сохранял не по одной строке, а например 10 или 20 строк в один файл.Craftsman1
Сообщение отредактировал Serge_007 - Воскресенье, 25.01.2015, 21:48
Sub beereator() Dim i&, n&, WBtemp As Workbook, WSH As Worksheet Set WSH = ActiveSheet: n = 10 With Application: .ScreenUpdating = 0: .EnableEvents = 0: .DisplayAlerts = 0 For i = WSH.Cells.SpecialCells(xlCellTypeLastCell).Row \ n To 0 Step -1 Set WBtemp = Workbooks.Add WSH.Rows(i * n + 1).Resize(10).Cut WBtemp.Sheets(1).[A1] WBtemp.SaveAs Filename:="C:\Users\Yura\Desktop\b" & i + 1, FileFormat:=6 WBtemp.Close Next .ScreenUpdating = 1: .EnableEvents = 1: .DisplayAlerts = 1: End With Set WBtemp = Nothing: Set WSH = Nothing End Sub
[/vba]
[vba]
Код
Sub beereator() Dim i&, n&, WBtemp As Workbook, WSH As Worksheet Set WSH = ActiveSheet: n = 10 With Application: .ScreenUpdating = 0: .EnableEvents = 0: .DisplayAlerts = 0 For i = WSH.Cells.SpecialCells(xlCellTypeLastCell).Row \ n To 0 Step -1 Set WBtemp = Workbooks.Add WSH.Rows(i * n + 1).Resize(10).Cut WBtemp.Sheets(1).[A1] WBtemp.SaveAs Filename:="C:\Users\Yura\Desktop\b" & i + 1, FileFormat:=6 WBtemp.Close Next .ScreenUpdating = 1: .EnableEvents = 1: .DisplayAlerts = 1: End With Set WBtemp = Nothing: Set WSH = Nothing End Sub
Всем спасибо за ответ. Написал вот так.. работает:
[vba]
Код
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\Desktop\list" & i & ".csv", FileFormat:=xlNormal 'файлы имунуются b1, b2, b3 и кладутся в корневой каталог ActiveWorkbook.Close Next Application.ScreenUpdating = False End Sub
[/vba]
Сейчас каждый документы именуется как 1.csv, 11.csv, 21.csv, 31.csv и т.д. Можете еще подсказать как правильно написать чтобы убрать в конце 1 т.е чтобы было просто по порядку 1.csv, 2.csv, 3.csv, 4.csv
Всем спасибо за ответ. Написал вот так.. работает:
[vba]
Код
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\Desktop\list" & i & ".csv", FileFormat:=xlNormal 'файлы имунуются b1, b2, b3 и кладутся в корневой каталог ActiveWorkbook.Close Next Application.ScreenUpdating = False End Sub
[/vba]
Сейчас каждый документы именуется как 1.csv, 11.csv, 21.csv, 31.csv и т.д. Можете еще подсказать как правильно написать чтобы убрать в конце 1 т.е чтобы было просто по порядку 1.csv, 2.csv, 3.csv, 4.csvCraftsman1
Тут же черным по белому написано, что CSV это xlCSV или 6, а вы сохраняете книгу excel 97-2003 с расширением csv. При правильном указании формата расширение указывать не обязательно, т.е. [vba]
Код
ActiveWorkbook.SaveAs Filename:= "C:\Users\Desktop\list" & i \ 10, FileFormat:=6
[/vba]
смотрите мой пост, там документы именуются правильно или у себя замените [vba]
Тут же черным по белому написано, что CSV это xlCSV или 6, а вы сохраняете книгу excel 97-2003 с расширением csv. При правильном указании формата расширение указывать не обязательно, т.е. [vba]
Код
ActiveWorkbook.SaveAs Filename:= "C:\Users\Desktop\list" & i \ 10, FileFormat:=6
Тут же черным по белому написано, что CSV это xlCSV или 6, а вы сохраняете книгу excel 97-2003 с расширением csv. При правильном указании формата расширение указывать не обязательно, т.е. ActiveWorkbook.SaveAs Filename:= "C:\Users\Desktop\list" & i \ 10, FileFormat:=6
Тут же черным по белому написано, что CSV это xlCSV или 6, а вы сохраняете книгу excel 97-2003 с расширением csv. При правильном указании формата расширение указывать не обязательно, т.е. ActiveWorkbook.SaveAs Filename:= "C:\Users\Desktop\list" & i \ 10, FileFormat:=6
krosav4ig, Спасибо за ответ. Разобрался.Craftsman1
Сообщение отредактировал Craftsman1 - Понедельник, 26.01.2015, 15:31
krosav4ig, Можешь подсказать насчет формата. Если ставлю так [vba]
Код
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
[/vba] то постоянно вылазит окно "Вы хотите сохранить изменения в файле.. ". Как сделать чтобы это окно не вылазило?
krosav4ig, Можешь подсказать насчет формата. Если ставлю так [vba]
Код
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
[/vba] то постоянно вылазит окно "Вы хотите сохранить изменения в файле.. ". Как сделать чтобы это окно не вылазило?Craftsman1
Сообщение отредактировал Craftsman1 - Среда, 28.01.2015, 14:27
[/vba] (в конце кода. кстати, почему False? вы уже отключили обновление экрана в начале кода, тут нужно его включить (True). Вас спасает только то, что при завершении работы макроса обновление экрана автоматически включается)
[/vba] (в конце кода. кстати, почему False? вы уже отключили обновление экрана в начале кода, тут нужно его включить (True). Вас спасает только то, что при завершении работы макроса обновление экрана автоматически включается)