Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.08.2010, 19:25   #1
gred
Пока ещё
Форумчанин
 
Аватар для gred
 
Регистрация: 26.02.2008
Сообщений: 116
По умолчанию Разделить файл на несколько

Есть экселевский файл , в нём 102 тысячи записей. Надо разделить файл на несколько файлов по 70 записей.
Есть идеи?
Буду очень благодарен.
Я мегапрограммер потерявший память.
Если кому помог, поставте '+' я буду благодарен
gred вне форума Ответить с цитированием
Старый 23.08.2010, 23:26   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

в итоге получится полторы тысячи файлов. как их назвать, куда складывать?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 24.08.2010, 01:51   #3
аналитика
Форумчанин
 
Регистрация: 14.05.2009
Сообщений: 311
По умолчанию

если ровно 102 000 записей, то 1 458 книг будет создано (в той же папке, где и исходная книга)
Код:
Sub Seventy()
   Dim lr As Long
   Dim i As Integer

   lr = Cells(Rows.Count, 1).End(xlUp).Row

   Do
      i = i + 1
      If 70 * (i - 1) + 1 > lr Then Exit Sub

      Range("A" & 70 * (i - 1) + 1 & ":A" & 70 * i).Copy 'здесь вторую "А" заменишь на букву последнего используемого столбца
      Workbooks.Add
      ActiveSheet.Paste
      ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\Книга" & i & ".xls", _
                            FileFormat:=xlExcel8
      ActiveWorkbook.Close
   Loop
End Sub
аналитика вне форума Ответить с цитированием
Старый 24.08.2010, 05:56   #4
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

А Вам это действительно нужно? Может быть сделать скрипт, который по запросу будет создавать один требуемый файл?
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 24.08.2010, 16:28   #5
gred
Пока ещё
Форумчанин
 
Аватар для gred
 
Регистрация: 26.02.2008
Сообщений: 116
По умолчанию

Спс за ответы.
Цитата:
Сообщение от аналитика Посмотреть сообщение
если ровно 102 000 записей, то 1 458 книг будет создано (в той же папке, где и исходная книга)
Код:
Sub Seventy()
   Dim lr As Long
   Dim i As Integer

   lr = Cells(Rows.Count, 1).End(xlUp).Row

   Do
      i = i + 1
      If 70 * (i - 1) + 1 > lr Then Exit Sub

      Range("A" & 70 * (i - 1) + 1 & ":A" & 70 * i).Copy 'здесь вторую "А" заменишь на букву последнего используемого столбца
      Workbooks.Add
      ActiveSheet.Paste
      ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\Книга" & i & ".xls", _
                            FileFormat:=xlExcel8
      ActiveWorkbook.Close
   Loop
End Sub
А не будет комп зависать от этого?
lr = Cells(Rows.Count, 1).End(xlUp).Row - можешь рассказать что тут делается остальное более менее понятно.
И последний вопрос ты что подразумеваешь под "книгой"? И я забыл сказать что эти файлы надо сохранять в csv
Цитата:
А Вам это действительно нужно? Может быть сделать скрипт, который по запросу будет создавать один требуемый файл?
Да нужен и такой если не трудно напишете. Я в вба не очень разбираюсь, но тут понадобилось.
Ещё раз выражаю очееень большую благодарность кто помогает.
Я мегапрограммер потерявший память.
Если кому помог, поставте '+' я буду благодарен

Последний раз редактировалось gred; 24.08.2010 в 16:37.
gred вне форума Ответить с цитированием
Старый 24.08.2010, 16:46   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Цитата:
И я забыл сказать что эти файлы надо сохранять в csv
Да нужен и такой если не трудно напишете
Да написаны давно подобные макросы...
Вы искать пробовали?

А если не пробовали, то, может, хоть правила раздела прочитаете?
(насчёт примера файла)

Если бы вы сразу сказали про CSV, и прикрепили к сообщению примеры файлов Excel и CSV (то, что есть, и то, что надо получить), - уже получили бы готовый макрос.

(добавлено)
Если данных было бы немного - помог бы этот макрос:
Код:
Option Compare Text
Const СтолбцыСТегами = "2,3,4,5,6,7,8,9,10,11"
Public Const CSVseparator = ";"

Sub Export2CSV()
    Dim sh As Worksheet: Set sh = Worksheets("For Tags Export")
    Dim cell As Range, ra As Range ' : Application.ScreenUpdating = False
    Set ra = sh.Range(sh.[A1], sh.Range("A" & sh.Rows.Count).End(xlUp))
    For Each cell In ra.Cells
        If cell = "есть" Then txt = txt & ТекстСтроки(cell.EntireRow)
    Next cell
    CSVpath = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, "Levis_Tags_" & Format(Now, "DD.MM.YY_HH.NN") & ".csv")
    SaveTXTfile CSVpath, txt
    MsgBox "CSV-файл для загрузки тегов в интернет-магазин успешно создан: " & CSVpath, vbInformation, "Готово"
End Sub

Function ТекстСтроки(ByRef ra As Range) As String
    For Each col In Split(СтолбцыСТегами, ",")
        ТекстСтроки = ТекстСтроки & CSVseparator & ra.Cells(col).Text
    Next
    ТекстСтроки = Mid(ТекстСтроки, Len(CSVseparator) + 1) & vbNewLine
End Function
В вашем же случае надо использовать специальную функцию:
Код:

Function Range2CSVstring(ByRef ra As Range, Optional ByVal sep As String = ";") As String
    ' получает диапазон ra и разделитель данных в файле CSV (по умолчанию разделитель ";")
    ' возвращает текстовую строку - готовую для записи в файл CSV
    Dim ro As Range, a
    For Each ro In ra.Rows
        a = ro.Value
        If IsArray(a) Then
            Range2CSVstring = Range2CSVstring & Arr2CSVstring(a, 1, LBound(a, 2), UBound(a, 2), sep) & vbNewLine
        Else
            Range2CSVstring = Range2CSVstring & a & vbNewLine
        End If
    Next ro
End Function

Последний раз редактировалось EducatedFool; 24.08.2010 в 16:58.
EducatedFool вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разделить файл на несколько частей provodnikam Microsoft Office Excel 71 17.10.2018 16:33
Разделить файл по определённой колонке! edition Microsoft Office Excel 12 27.08.2010 17:06
Файл в несколько терабайт в архиве. Alex Cones Свободное общение 28 01.03.2010 17:08
Можно ли разделить сразу несколько цифр на одно и тоже число? Xell Microsoft Office Excel 2 12.01.2009 13:32
Как добавить в файл несколько строк?! zotox Помощь студентам 4 11.09.2008 22:32