- Автор темы
- #1
Здравствуйте!
Не совсем по теме, но не знаю в какую тему написать.
Нужна помощь с написанием макроса для экселя.
Есть таблица из 19000 строк, заголовок в первой строке.
Нужно, что бы макрос создал необходимое число файлов эксель, и вставил туда заданное количество строк (проще говоря разбил один большой файл на много маленьких.
На просторах нашел такое решение:
Const ROWS_IN_PART = 500 'число строк в части файла
Sub николай100()
Dim i&, j&, ws As Worksheet, nm$
Set ws = ActiveSheet
nm = Left(ActiveWorkbook.FullName, InStrRev(ActiveWorkbook.FullName, ".") - 1) & "_"
Application.ScreenUpdating = False
For i = 1 To ActiveSheet.UsedRange.Rows.Count Step ROWS_IN_PART
With Workbooks.Add(xlWBATWorksheet)
Range(ws.Rows(i), ws.Rows(i + ROWS_IN_PART - 1)).Copy ActiveCell
j = j + 1
.Close True, nm & Format(j, "000")
End With
Next
Application.ScreenUpdating = True
End Sub
Оно работает прекрасно, НО:
1. Макрос копирует все строки поочереди, без учета заголовка (т.е. названия столбцов присутствует только в первом файле, а в остальных столбы без названия).
2. В файле создается 1 лист с названием "Лист 1", а хотелось бы что бы название листа было заданным (например Products).
Помогите пожалуйста изменить макрос так, что бы работало как надо.
Не совсем по теме, но не знаю в какую тему написать.
Нужна помощь с написанием макроса для экселя.
Есть таблица из 19000 строк, заголовок в первой строке.
Нужно, что бы макрос создал необходимое число файлов эксель, и вставил туда заданное количество строк (проще говоря разбил один большой файл на много маленьких.
На просторах нашел такое решение:
Const ROWS_IN_PART = 500 'число строк в части файла
Sub николай100()
Dim i&, j&, ws As Worksheet, nm$
Set ws = ActiveSheet
nm = Left(ActiveWorkbook.FullName, InStrRev(ActiveWorkbook.FullName, ".") - 1) & "_"
Application.ScreenUpdating = False
For i = 1 To ActiveSheet.UsedRange.Rows.Count Step ROWS_IN_PART
With Workbooks.Add(xlWBATWorksheet)
Range(ws.Rows(i), ws.Rows(i + ROWS_IN_PART - 1)).Copy ActiveCell
j = j + 1
.Close True, nm & Format(j, "000")
End With
Next
Application.ScreenUpdating = True
End Sub
Оно работает прекрасно, НО:
1. Макрос копирует все строки поочереди, без учета заголовка (т.е. названия столбцов присутствует только в первом файле, а в остальных столбы без названия).
2. В файле создается 1 лист с названием "Лист 1", а хотелось бы что бы название листа было заданным (например Products).
Помогите пожалуйста изменить макрос так, что бы работало как надо.