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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2010, 15:51   #1
Gvaridos
Пользователь
 
Регистрация: 26.10.2010
Сообщений: 32
Восклицание Копировать строку фильтрованного списка в другую книгу, на последнюю пустую строку

Помогите написать макрос
Происходит постоянный импорт данных
Из отфильтрованного массива данных необходимо скопировать все строки (кроме заголовка) в отдельную Книгу на последнюю пустую строку.


Исходный фаил: Альфа-директ
Конечный Файл: Журнал учёта маржи

Помогите пожалуйста!
Вложения
Тип файла: zip файлы.zip (31.6 Кб, 24 просмотров)
Gvaridos вне форума Ответить с цитированием
Старый 16.11.2010, 18:16   #2
EugeneS
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 472
По умолчанию

можно так,

Код:
Sub Find_Copy()
Application.ScreenUpdating = False
With ActiveWorkbook: Workbooks.Open (.Path & "\" & "ЖУРНАЛ УЧЕТА МАРЖИ.xls"): .Activate: Columns("a:j").autofilter Field:=7, Criteria1:="<35"
Range([a2], Cells.SpecialCells(xlCellTypeLastCell)).SpecialCells(xlCellTypeVisible).Copy _
Workbooks("ЖУРНАЛ УЧЕТА МАРЖИ.xls").Sheets(1).Cells.SpecialCells(xlCellTypeLastCell).Offset(1, -9)
Selection.autofilter: Application.ScreenUpdating = True: End With: End Sub
Условия использования описывались в предыдущей Вашей теме с этими же файлами.
EugeneS вне форума Ответить с цитированием
Старый 17.11.2010, 10:59   #3
Gvaridos
Пользователь
 
Регистрация: 26.10.2010
Сообщений: 32
По умолчанию

Цитата:
Сообщение от EugeneS Посмотреть сообщение
можно так,

Код:
Sub Find_Copy()
Application.ScreenUpdating = False
With ActiveWorkbook: Workbooks.Open (.Path & "\" & "ЖУРНАЛ УЧЕТА МАРЖИ.xls"): .Activate: Columns("a:j").autofilter Field:=7, Criteria1:="<35"
Range([a2], Cells.SpecialCells(xlCellTypeLastCell)).SpecialCells(xlCellTypeVisible).Copy _
Workbooks("ЖУРНАЛ УЧЕТА МАРЖИ.xls").Sheets(1).Cells.SpecialCells(xlCellTypeLastCell).Offset(1, -9)
Selection.autofilter: Application.ScreenUpdating = True: End With: End Sub
Условия использования описывались в предыдущей Вашей теме с этими же файлами.
Вы кудесник, после 4 форумов вы единственный у которого всё работает.

а можно немного подкорректировать и копировать данные в файл "Журнал учёта маржи" следующим образом:
в ячейке столбца "дата" вставлять текущую дату копирования, в ячейке столбца время вставлять текущее время копирования, портфель, ФИО, и уровень маржи брать из файла Альфа-Директ как по предыдущему макросу, а в ячейке примечание всегда вставлять "принято к сведению"
??????

В приложенном файле есть как раз это форма куда нужно копировать. Поможете?
Вложения
Тип файла: rar ЖУРНАЛ УЧЕТА.rar (91.8 Кб, 19 просмотров)
Gvaridos вне форума Ответить с цитированием
Старый 17.11.2010, 14:06   #4
EugeneS
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 472
По умолчанию

см. вложение

В файле "Альфа-директ" на "Лист1" запустите макрос "Find_Copy". Файл "ЖУРНАЛ УЧЕТА.xls" должен находится в одной папке с файлом "Альфа-директ".
Вложения
Тип файла: zip result.zip (147.1 Кб, 24 просмотров)

Последний раз редактировалось EugeneS; 17.11.2010 в 14:58.
EugeneS вне форума Ответить с цитированием
Старый 18.11.2010, 12:34   #5
Gvaridos
Пользователь
 
Регистрация: 26.10.2010
Сообщений: 32
По умолчанию

Цитата:
Сообщение от EugeneS Посмотреть сообщение
см. вложение

В файле "Альфа-директ" на "Лист1" запустите макрос "Find_Copy". Файл "ЖУРНАЛ УЧЕТА.xls" должен находится в одной папке с файлом "Альфа-директ".
Огромное, человеческое спасибо!

А можем ещё усложнить задачу?
1)Можно убрать бокс с сообщением "нет клиентов с маржой ниже 35%"?
Хочу поставить автозапуск макроса через каждые 30 сек, т.е. если клиентов нет, пусть продолжается дальнейшее изменение листа. как я понимаю функция Application.ScreenUpdating = False блокирует внешний импорт.

2)Можно ли сделать форматирование так, чтобы пропуск строки в файле ЖУРНАЛ УЧЁТА шёл только после каждого дня, а не после каждого запуска макроса?
Т.е. вылетевшие клиенты с маржой в итоге добовлялись к текущему дню, либо шёл пропуск строки и начинался новый день

3) Самое наверное сложное. Можно ли сделать так, что бы "выпадавший" клиент копировался в день только один раз в "Журнал учёта маржи"
Это связанно с тем, что я потом прикручу макрос автоматической отправки сообщения на мыло через Outlook. А посылать клиенту в день по 20 сообщений будет неправильно.

Я вам благодарен!
Не сочтите за наглость=) Помогите если есть время и желание
Gvaridos вне форума Ответить с цитированием
Старый 18.11.2010, 17:57   #6
EugeneS
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 472
По умолчанию

см. вложение

Исходя из того, что файл "ЖУРНАЛ УЧЕТА.xls" будет обновляться несколько раз в минуту, целесообразно держать его открытым.

Макрос проверяет открыта ли книга "ЖУРНАЛ УЧЕТА.xls" и, если нет, открывает её и по окончании сохраняет не закрывая. Если же книга "ЖУРНАЛ УЧЕТА.xls" будет открыта изначально, макрос просто быстрее выполнится. Книга "ЖУРНАЛ УЧЕТА.xls" должна будет находится с книгой "Альфа-директ.xls" в одной папке.
Вложения
Тип файла: zip result.zip (154.5 Кб, 18 просмотров)
EugeneS вне форума Ответить с цитированием
Старый 19.11.2010, 10:44   #7
Gvaridos
Пользователь
 
Регистрация: 26.10.2010
Сообщений: 32
Восклицание

Цитата:
Сообщение от EugeneS Посмотреть сообщение
см. вложение

Исходя из того, что файл "ЖУРНАЛ УЧЕТА.xls" будет обновляться несколько раз в минуту, целесообразно держать его открытым.

Макрос проверяет открыта ли книга "ЖУРНАЛ УЧЕТА.xls" и, если нет, открывает её и по окончании сохраняет не закрывая. Если же книга "ЖУРНАЛ УЧЕТА.xls" будет открыта изначально, макрос просто быстрее выполнится. Книга "ЖУРНАЛ УЧЕТА.xls" должна будет находится с книгой "Альфа-директ.xls" в одной папке.
распаковал папку result, запустил оба файла. Запустил макрос.
Он сработал, сделал своё дело, но в конце вышел бокс с сообщением: "Книга Журнал учёта не найдена в одной папке с Альфа директ"
т.е. макрос работал, но в конце всегда выводил это сообщение будь то файлы в папке result, на рабочем столе или в любой другой папке


Далее я подчистил "Журнал учёта" (удалил ненужные листы, и переименовал нужные).
Переименовал "Лист 1" куда идёт копирование в "2010", потом заменил это в коде:
On Error GoTo handler: With Workbooks("ЖУРНАЛ УЧЕТА.xls").Sheets("2010")
Запустил макрос и теперь он ничего не делает а просто выводит плашку "Книга Журнал учёта не найдена в одной папке с Альфа директ"

Прикрепляю конечную версию "Журнала" и сам "Альфа-директ"

Посмотрите пожалуйста.
Вложения
Тип файла: rar to EugeneS.rar (55.1 Кб, 13 просмотров)
Gvaridos вне форума Ответить с цитированием
Старый 19.11.2010, 11:37   #8
EugeneS
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 472
По умолчанию

исправил, проверяйте
Вложения
Тип файла: zip result1.zip (65.0 Кб, 19 просмотров)
EugeneS вне форума Ответить с цитированием
Старый 19.11.2010, 16:06   #9
coernecow
Заблокирован
 
Регистрация: 06.11.2010
Сообщений: 5
По умолчанию Копировать строку фильтрованного списка в другую книгу на последнюю пустую строку

Идея такая была:
Вызываю iewebbrowser->NavigateURL;
после чего нужно на его событие NavigateComplete когда ввсе загрузилось
подождать 5 сек чтобы можно было посмотреть на страницу, потом опять вызывать NavigateURL; и так несколько раз.
Как можно реализовать?
coernecow вне форума Ответить с цитированием
Старый 22.11.2010, 11:08   #10
Gvaridos
Пользователь
 
Регистрация: 26.10.2010
Сообщений: 32
По умолчанию

Посмотрите код, ещё раз пожалуйста, что-то не идёт

Последние файлы...
Вложения
Тип файла: zip result0.zip (67.7 Кб, 13 просмотров)
Gvaridos вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удалить пустую строку созданную StringList-ом Shouldercannon Общие вопросы Delphi 18 14.12.2011 11:52
Как выбрать последный пустую строку в LISTBOX ? Aqil_f Microsoft Office Excel 14 06.09.2010 18:00
Как считать последнюю строку ? Katmai Общие вопросы Delphi 13 27.07.2010 20:49
Преобразование даты в пустую строку insense БД в Delphi 6 02.07.2010 09:13
Удалить пустую строку из ListView Shouldercannon Общие вопросы Delphi 2 28.04.2010 16:02