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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2012, 21:34   #1
Любовь87
Пользователь
 
Регистрация: 27.02.2012
Сообщений: 20
По умолчанию Цикл в столбце и запись в файл

Добрый день!
Подскажите, пожалуйста, как можно задать цикл или отбор в столбце.
У меня написан макрос, который принимает файлы с кодами, и копирует их в другую книгу.
Мне нужно сделать отбор по коду, если код = 103, то записывать в одну книгу, а все остальные строчки с другими кодами(не равными 103) записывать в другую книгу.
Подскажите как можно это сделать?
Вложения
Тип файла: zip ОПС 2 - 1C.zip (24.3 Кб, 10 просмотров)
Любовь87 вне форума Ответить с цитированием
Старый 27.02.2012, 21:56   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Добрый день.
По делу пока разбираться некогда, но вот одну ошибку в коде заметил:
Код:
WSh.Range("A1:E1" & iLastRow)
Должно быть
Код:
WSh.Range("A1:E" & iLastRow)
Иначе у Вас получается
WSh.Range("A1:E1166") - т.е. лишних 5 тысяч ячеек просматривается!

Я думаю, чтоб всё не ломать/переделывать, нужно в конец кода по сбору файлов добавить фильтр собранного по коду 103, копирование/перенос отобранного в новую книгу, удаление отобранного.
Например, вызовите такой код после импорта файлов:
Код:
Sub Perenos()
    Dim x As Range, rr As Range: Application.ScreenUpdating = False
    Set x = [C:C].Find(103, , , xlWhole)
    If Not x Is Nothing Then
        [C:C].ColumnDifferences(x).EntireRow.Hidden = True
        Set rr = ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible).EntireRow
        Rows.Hidden = False
        rr.Copy Workbooks.Add.Sheets(1).[a1]
        rr.Delete
    End If
End Sub
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 27.02.2012 в 22:11.
Hugo121 вне форума Ответить с цитированием
Старый 01.03.2012, 19:38   #3
Любовь87
Пользователь
 
Регистрация: 27.02.2012
Сообщений: 20
По умолчанию

Посмотрите пожалуйста что я делаю не так. Как сделать разделение на два файла?
Вложения
Тип файла: zip DBF.zip (34.9 Кб, 5 просмотров)
Любовь87 вне форума Ответить с цитированием
Старый 01.03.2012, 21:06   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Добавил (и чуть подправил - у меня на 2007 в той редакции не хотело работать) вызов в макрос CollectAllClients().
Новая книга создаётся без шапки и не сохраняется.
Если нужна шапка - добавьте её копирование или создание до строк

rr.Copy Workbooks.Add.Sheets(1).[a1]
и тут вместо [a1] укажите ячейку под шапкой.

Вернее Workbooks.Add.Sheets(1) нужно вынести до копирования и рисования шапки.
Типа
Код:
        Dim sh As Worksheet
        Set sh = Workbooks.Add.Sheets(1)
        sh.[a1] = "Первая ячейка шапки"
        rr.Copy sh.[a2]
Вложения
Тип файла: zip ОПС 2 - 1C-H.ZIP (20.2 Кб, 11 просмотров)
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 02.03.2012, 09:27   #5
Любовь87
Пользователь
 
Регистрация: 27.02.2012
Сообщений: 20
По умолчанию

у нас везде стоит офис 2003. и куда у вас исчезают строчки с кодом 103?
Код 103 записывается в другую книгу без названия, и нужно указывать где её сохранить. Допустим это можно поправить.
Книга без 103 кода содержаит 6 столбцом с перемещаемыми действиями, а книга с 103 кодом содержит 4 столбца без перемещаемых действий. Наверно не правильный порядок?

Мы должны принять данные из файла в таком виде - в каком они есть, а потом уже при передачи разделять 103 и остальные виды на разные файлы. как это сделать?

Последний раз редактировалось Любовь87; 02.03.2012 в 11:25.
Любовь87 вне форума Ответить с цитированием
Старый 03.03.2012, 14:43   #6
Любовь87
Пользователь
 
Регистрация: 27.02.2012
Сообщений: 20
По умолчанию

Модуль 1 надо оставить без изменения, а в модуле 2 добавить сохранение в одну книгу строчки с кодом 103, а влругую книгу остальные строчки , файлы по структуре должны быть одинаковы, отличаться только названием
Любовь87 вне форума Ответить с цитированием
Старый 05.03.2012, 11:29   #7
Любовь87
Пользователь
 
Регистрация: 27.02.2012
Сообщений: 20
По умолчанию

подскажите пожалуйста, как это можно осуществить?
Любовь87 вне форума Ответить с цитированием
Старый 05.03.2012, 11:52   #8
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Вы же сами просили:
"если код = 103, то записывать в одну книгу, а все остальные строчки с другими кодами(не равными 103) записывать в другую книгу."
Так и сделано - все коды 103 в другой книге, поищите внимательнее в открытых книгах.
Только там нет шапки и красоты - только данные. И эта книга ещё не сохранена!
Ну а чтоб сильно не ломать код, я сделал как и описал выше - просто после импорта отбираю фильтром (Sub Perenos()) эти коды в новую книгу.
Впрочем, я повторяюсь... всё это уже сказано выше.

А на счёт модуля2 - если переносить нужно в нём, то уберите/отключите выполнение кода Sub Perenos() в первом модуле, а во втором перед переносом (который Вы уже добавили) нужно снять защиту листа.
Т.е. Ваш вариант в DBF.zip работает, нужно всего лишь добавить в код одну строку перед переносом:
ThisWorkbook.Worksheets("ОПС-2").Protect "eagc", False
ну и возможно затем нужно заблокировать лист назад.
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 05.03.2012 в 12:06.
Hugo121 вне форума Ответить с цитированием
Старый 19.03.2012, 15:51   #9
Любовь87
Пользователь
 
Регистрация: 27.02.2012
Сообщений: 20
По умолчанию

Помогите, пожалуйста, доработать.
Мне нужно чтобы в папку DBF1 записывались два файла (листа):
1) с названием сдельная21C11.2011.xls, где была бы шапка и только строчки с кодом 102
2) с названием сетевая21C11.2011.xls, где была бы шапка и строчки без кода 102
Вложения
Тип файла: zip Копия ОПС 2 - 1C- моё.zip (34.1 Кб, 7 просмотров)
Любовь87 вне форума Ответить с цитированием
Старый 22.03.2012, 08:15   #10
Любовь87
Пользователь
 
Регистрация: 27.02.2012
Сообщений: 20
По умолчанию

Помогите найти ошибку в переносе, у меня не получается создание другой книги с перенесёнными строчками. Книга с листом вообще не создаётся
Вложения
Тип файла: zip Копия ОПС 2 - 1C-H моё.zip (34.2 Кб, 5 просмотров)
Любовь87 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
добавить символ в каждую запись в столбце andrei186 SQL, базы данных 2 28.10.2011 13:23
Цикл, запись результат в ячейки bruce_lee Microsoft Office Excel 4 06.10.2010 16:08
последняя запись в столбце ALEKS2008 Microsoft Office Excel 3 18.06.2010 13:29