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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.04.2012, 23:43   #31
serzav
Новичок
Джуниор
 
Регистрация: 10.01.2011
Сообщений: 1
По умолчанию

Очень буду благодарен если поможете.
Имеется файл на 220 тыс строк (список отелей)
Первый столбец имеет повторяющиеся поля (название города- всего около 32 тыс городов)
Необходимо разделить файл Excel на соответственно 32 тыс файлов (желательно csv или txt) по каждому городу, чтобы название файла соответствовало городу, и в файле остался только один столбец (список отелей этого города)
Примеры исходного и желаемого конечного файла в скрепке.
Вложения
Тип файла: zip excel.zip (6.3 Кб, 13 просмотров)
serzav вне форума Ответить с цитированием
Старый 25.10.2012, 19:05   #32
makc9I
Пользователь
 
Регистрация: 25.10.2012
Сообщений: 11
По умолчанию

какие нужно внести изменения в этот код:
Код:
Sub DivFile()
    Dim i As Long, s As String, ws As Worksheet
    Application.ScreenUpdating = False: Set ws = ActiveSheet
    For i = 1 To ws.UsedRange.Row + ws.UsedRange.Rows.Count - 1 Step 500
        Workbooks.Add xlWBATWorksheet: ws.Rows(i & ":" & i + 499).Copy [A1]
        s = Replace(ThisWorkbook.FullName, ".xls", "-" & (Fix(i / 500) + 1) & ".xls")
        ActiveWorkbook.SaveAs s: ActiveWorkbook.Close
    Next
End Sub
чтобы сохранить файл не как экселевский, а как dbf. Просто смена расширения не помогает, файл не читается dbf редактором после.

Проблема такова: на входе имею dbf файл с примерно 300к записями, на выходе нужны dbf файлы с 500 записями каждый, полученные разбиением этого большого файла.
Не нашел иного способа разбиения этого файла, как выгрузка в эксель. Только лишь стоит вопрос в сохранении в нужном формате. Эксель 2003 поддерживает сохранение в dbf.

Последний раз редактировалось makc9I; 25.10.2012 в 19:16.
makc9I вне форума Ответить с цитированием
Старый 25.10.2012, 21:11   #33
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Код:
        ActiveWorkbook.SaveAs s, xlDBF4 'варианты: xlDBF3, xlDBF2
        ActiveWorkbook.Close
> Эксель 2003 поддерживает сохранение в dbf
Но Эксель 2003 не откроет файл с 300к записями, а Excel 2007 не умеет сохранять в DBF
Правда, есть надстройки для работы с DBF в 2007, поищите.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619

Последний раз редактировалось Казанский; 25.10.2012 в 21:15.
Казанский вне форума Ответить с цитированием
Старый 25.10.2012, 23:42   #34
R Dmitry
Форумчанин
 
Регистрация: 07.03.2010
Сообщений: 796
По умолчанию

алгоритм решения такой:
------
1. создаем пустой dbf с нужной структурой (можно заготовить заранее)
2. копируем этот dbf c нужным именем
3. с помощью ado заливаем в него 500 записей
4. переходим к шагу 2 пока не закончатся записи.
____________________

могу реализовать за небольшое вознаграждение.
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234

Последний раз редактировалось R Dmitry; 25.10.2012 в 23:57.
R Dmitry вне форума Ответить с цитированием
Старый 26.10.2012, 08:45   #35
makc9I
Пользователь
 
Регистрация: 25.10.2012
Сообщений: 11
По умолчанию

Казанский, все спокойно открывается. Макрос, который тут предлагали для разбиения работает, но файлы не являются dbf файлами, когда я просто заменяю расширение в макросе.

R Dmitry А можно это автоматизировать? Я не знаю, что такое ado. С написанием макросов под эксель вообще не знаком
makc9I вне форума Ответить с цитированием
Старый 26.10.2012, 09:07   #36
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Посмотрите здесь.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 26.10.2012, 09:35   #37
makc9I
Пользователь
 
Регистрация: 25.10.2012
Сообщений: 11
По умолчанию

SAS888, спасибо, но у меня в распоряжении только 2003 и 2010 эксель. К тому же, как я писал выше, мой файл спокойно открывается 2003 офисом и все, что мне надо, это лишь несколько изменить выложенный выше код макроса, чтобы сохранение происходило в dbf по всем правилам(как в случае, если бы я нажал сохранить как и выбрал формат dbf), а не просто припиской расширения.
Как я понимаю, надо заменить эту строку:
Код:
s = Replace(ThisWorkbook.FullName, ".xls", "-" & (Fix(i / 500) + 1) & ".xls")
какой-то другой функцией
makc9I вне форума Ответить с цитированием
Старый 26.10.2012, 10:17   #38
R Dmitry
Форумчанин
 
Регистрация: 07.03.2010
Сообщений: 796
По умолчанию

сбрасывайте свой dbf мне в почту, вечером посмотрю
---------------
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234
R Dmitry вне форума Ответить с цитированием
Старый 26.10.2012, 10:37   #39
makc9I
Пользователь
 
Регистрация: 25.10.2012
Сообщений: 11
По умолчанию

R Dmitry, он весит 300 метров и содержит неразглашаемые данные, так что нельзя ( Могу скинуть dbf с такой же структурой, но без данных или сам впишу пару тройку рендомных данных
makc9I вне форума Ответить с цитированием
Старый 26.10.2012, 10:45   #40
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

> файлы не являются dbf файлами, когда я просто заменяю расширение в макросе
> что мне надо, это лишь несколько изменить выложенный выше код макроса, чтобы
> сохранение происходило в dbf по всем правилам(как в случае, если бы я нажал
> сохранить как и выбрал формат dbf), а не просто припиской расширения

Вы не заметили код в сообщении #33?
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа разделения экрана на несколько частей ArtInt Софт 8 14.05.2012 10:29
Файл в несколько терабайт в архиве. Alex Cones Свободное общение 28 01.03.2010 17:08
Разбить Bitmap на несколько частей apromix Мультимедиа в Delphi 4 24.02.2010 11:26
Можно ли разделить сразу несколько цифр на одно и тоже число? Xell Microsoft Office Excel 2 12.01.2009 13:32
Как добавить в файл несколько строк?! zotox Помощь студентам 4 11.09.2008 22:32