Страницы: 1
RSS
Копирование импортируемых данных
 
Добрый вечер!  
 
Подскажите пожалуйста как написать, макрос- цикл, поиском пользовалась очень много, куча разрозненных данных, но в кучку собрать не получается. Сама я начинающий экселер  
Есть книга куда импортируются опрделенные значения.  
Необходимо раз в час переносить данные на Лист2 и   под последней ячейкой массива ставить время, когда произошло копирование    
Файл прилагаю на первом листе данные, которые постоянно обновляются и которые раз в час надо ставить в Лист2 с указанием времени  
 
Вот что я пыталась  
 
Sheets("Лист1").Select  
   Range("A1:W2").Select  
   Range("W2").Activate  
   Selection.Copy  
   Sheets("Лист2").Select  
   Range("A1").Select  
   ActiveSheet.Paste  
   Range("W3") = Time  
 
Application.OnTime Now + TimeValue("00:59:00")  
 
Большое спасибо за понимание
 
Мож так(в общий модуль):  
Public i&  
 
Public Sub ww()  
   If i > 12 Then i = 0: Exit Sub  
   With Sheets("Лист2").[A65536].End(xlUp)
       Sheets("Лист1").Range("A1:W2").Copy .Offset(2)  
       .Offset(1, 22).Value = Time  
   End With: i = i + 1  
   Application.OnTime Now + TimeValue("00:59:00"), "ww"  
End Sub
Я сам - дурнее всякого примера! ...
 
CПасибо огромное KukLP, все заработало как надо на 5+, только я вот чуть чуть обновила его, расширив набор выводимых параметров и он заглох, плюс дату добавила, рядом,  файл прилагаю, извините за глупые вопросы, просто очекнь хочу в VBA разобраться, мне по работе очень он помогает...  
 
\еще раз спасибо за помощь  
 
 
Public i&  
изменила я так  
________  
Public Sub ww()  
If i > 12 Then i = 0: Exit Sub  
With Sheets("Лист2").[A65536].End(xlUp)
Sheets("Лист1").Range("A1:AC2").copy.Offset (2)  
.Offset(1, 29).Value = Time  
.Offset(1, 30).Value = Date  
End With: i = i + 1  
Application.OnTime Now + TimeValue("01:00:00"), "ww"  
End Sub  
<EM><STRONG>Файл удален</STRONG> - велик размер - [<STRONG>МОДЕРАТОРЫ</STRONG>]</EM>
 
{quote}{login=Uliana}{date=14.11.2011 09:13}{thema=}{post}CПасибо огромное KukLP, все заработало как надо на 5+, только я вот чуть чуть обновила его, расширив набор выводимых параметров и он заглох, плюс дату добавила, рядом,  файл прилагаю, извините за глупые вопросы, просто очекнь хочу в VBA разобраться, мне по работе очень он помогает...  
 
\еще раз спасибо за помощь  
 
 
Public i&  
изменила я так  
________  
Public Sub ww()  
If i > 12 Then i = 0: Exit Sub  
With Sheets("Лист2").[A65536].End(xlUp)
Sheets("Лист1").Range("A1:AC2").copy.Offset (2)  
.Offset(1, 29).Value = Time  
.Offset(1, 30).Value = Date  
End With: i = i + 1  
Application.OnTime Now + TimeValue("01:00:00"), "ww"  
End Sub  
<EM><STRONG>Файл удален</STRONG> - велик размер - [<STRONG>МОДЕРАТОРЫ</STRONG>]</EM>{/post}{/quote}  
 
 
Извините не знала, убрала лишние листы
 
Спасибо я разобралось все заработало, просто удалив модуль и вставивь новый, и записав на него мой update KukLP's кода.  
 
ЕШЕ раз Мерси коллеги !)
 
Уважаемые    
 
не смогла разобраться. если у меня на основании импортируемых данных, которые переносяться на другой лист расчитываются некие показатели, то тут начинается проблема, он либо их не видит либо переносит 0, неправильную ссылку и т.п., тоесть не копирует то что не явл. просто значением, подскажите пожалуйста что добавить в код. чтобы он проставлял просто значения при копировании range с листа на лист  
 
 
Спасибо  
 
Paste values я поигралась но не получилось либо не туда вставляла в коде, либо не так функцию понимаю ((((
 
Уля, вы файл приложите и объясните, что куда должно копироваться
 
спасибо что откликнулись  
вот пример, импортируется данные по опционам, выборочные параметры хочу переносить на другой лист час за часом, значениями, а не линками и т.п., чтобы строить анализ на статистике.  
 
Получилось пока только переносить в строгий участок второго листа, а так нельзя, данные будут ежечасно затирать друг друга.  
Сделала я это модифицировав код из этой темы    
Public Sub yy()  
If i > 12 Then i = 0: Exit Sub  
With Sheets("Лист7").[A65536].End(xlUp)
Sheets("oppain").Select  
Range("C42:H47").Select  
Selection.Copy  
Sheets("Лист7").Select  
Range("C42:H47").Select  
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _  
:=True, Transpose:=False  
Application.CutCopyMode = False  
.Offset(6, 4).Value = Time  
.Offset(6, 5).Value = Date  
End With: i = i + 1  
Application.OnTime Now + TimeValue("00:59:00"), "yy"  
End Sub  
 
вот так  
 
а нужно чтобы они друг за другом ложились, если просто использовать первоначальной код KukLP, то вставляться будет все кроме расчетных или залинкованных на импорт ячеек.
 
Уля, я не работаю в вашей компании и мне все эти опционы ни о чем не говорят.  
 
Вы скажите какие ячейки с листа "oppain" нужно скопировать на Лист7 и в какой диапазон? Или можно нарастающими данными, т.е. например, первые раз данные копируются в А1, потом, в А2, потом в А3 и т.д.  
 
Сейчас я вижу, что с листа Oppain копируется диапазон C42:H47 и вставляется в диапазон C42:H47 листа 7, а потом вставляется время в ячейку F7 Листа7.    
 
Давайте поподробнее. На данный момент я понял, что вам нужно скопировать с листа Oppain данные, как значения, а вот куда их вставлять на Листе7 я не понял
 
{quote}{login=}{date=18.11.2011 01:52}{thema=}{post}Уля, я не работаю в вашей компании и мне все эти опционы ни о чем не говорят.  
 
Вы скажите какие ячейки с листа "oppain" нужно скопировать на Лист7 и в какой диапазон? Или можно нарастающими данными, т.е. например, первые раз данные копируются в А1, потом, в А2, потом в А3 и т.д.  
 
Сейчас я вижу, что с листа Oppain копируется диапазон C42:H47 и вставляется в диапазон C42:H47 листа 7, а потом вставляется время в ячейку F7 Листа7.    
 
Давайте поподробнее. На данный момент я понял, что вам нужно скопировать с листа Oppain данные, как значения, а вот куда их вставлять на Листе7 я не понял{/post}{/quote}  
 
Диапазон как я выделила это пример, а вот ключевое, чтоб вставлялись, как вы написали = нарастающими данными, т.е. например, первые раз данные копируются в А1, потом, в А2, потом в А3 и т.д., тоесть друг за другом, только если это диапазон чтобы они помещались, не перерывая друг друга - старые не затерлись новыми, при копировании каждый час
 
ну, попробуйте так  
 
Public Sub CopyInfo()  
Dim iLastRow As Long  
 
   If i > 12 Then  
       i = 0  
       Exit Sub  
   End If  
   Sheets("oppain").Range("C42:H47").Copy  
   With Sheets("Лист7")  
       iLastRow = .Cells(Rows.Count, "F").End(xlUp).Row + 1  
       .Range("A" & iLastRow).PasteSpecial Paste:=xlPasteValues  
       .Range("G" & iLastRow).Value = Time  
       .Range("H" & iLastRow).Value = Date  
       .Columns("G:H").EntireColumn.AutoFit  
   End With  
   i = i + 1  
   Application.CutCopyMode = False  
   Application.OnTime Now + TimeValue("00:59:00"), "yy"  
End Sub  
 
Время будет вставляться в столбец G  
Дата будет вставляться в столбец H  
 
Если я неправильно понял, то дайте комментарий, я поправлю
 
Если я не ясно выражаюсь, просто с 7 до 21 на работе, голова уже слабо варит. Если я плохо обьяснила напишите плиз, я разверну  
 
 
 
Еще раз спасбо большое большое за помощь
 
упс,    
 
я назвал макрос "CopyInfo"  
 
вам нужно будет    
1) либо обратно изменить название на "yy" (не знаю, это на русском или английском)  
2) либо в строке    
 
Application.OnTime Now + TimeValue("00:59:00"), "yy"  
 
вместо "уу" написать "CopyInfo"
 
{quote}{login=}{date=18.11.2011 02:14}{thema=}{post}ну, попробуйте так  
 
......  
Если я неправильно понял, то дайте комментарий, я поправлю{/post}{/quote}  
 
 
мы одновременно писали)) спасибо, вроде то, я попробую завтра отпишу, когда рынок будет работать и импорт будет активен, чтоб в боевых условиях прочекать  
 
спасиб Noname
 
Уля, нельзя столько работать! Работ много, а здоровье и семья - одна!  
Всех денег всё равно не заработаешь, пусть муж работает )  
 
Работать нужно с 10.00 до 19.00, а потом домой ))  
 
 
P.S. Вы ещё не тестировали мой код, который я дал выше?
 
да, не за что )
 
Зачем нужна переменная i? В примере она не используется.  
Ещё - зачем запускать код по таймеру? Может быть лучше по событию получения новых данных делать эту работу? Если не наступает события изменения на листе, то можно следить за событием пересчёта (завязать на диапазон формулу) - тогда гарантированно все новые данные скопируются.  
А по таймеру может получиться так - или что-то не скопируется, если обновления будут чаще, чем раз в час, или скопируется дважды, если обновления будут реже.  
Т.е. не может получиться, а обязательно когда-нибудь так получится.
 
По поводу I, может Уля хочет, чтобы ещё код запускался 11 раз? )  
 
но как-то это криво ) Точно нужно на что-то другое ориентироваться.  
 
 
P.S. Игорь, ты чего не спишь ? )
 
А ты? :)  
У нас время на 2 часа от московского сдвинуто, и ещё у нас завтра (т.е. уже сегодня) праздник - т.е. спим :)  
 
А по теме -    
1. Тогда i надо делать публичной, или цикл добавлять.  
2. По DDE вот тема: http://www.planetaexcel.ru/forum.php?thread_id=10799
 
а я безработный )) за последнюю неделю перешёл на ночной образ жизни )) ложусь спать в 8-9 утра ))  
 
угу, i нужно объявлять как Public и выносить на уровень модуля
 
что-то я забыл, а ты откуда локально? )
 
Так у Сергея вроде так и было сделано, если правильно помню.  
Только не понял, зачем только сутки код крутить, а не всё время.  
Если сутки - то может и по таймеру всё соберётся.
 
Локально сейчас у меня 01:52.  
Т.е. немного западнее России :)
 
Привет, работает странно я приложила, ставит везде время, хотя ставит попорядку как надо, но не переносит значения.  
Данные обновляются каждые о.5 секунд, как и котировки, часовые срезы нужно для ститистики и исследований.  
 
Спасибо и извините за напряги)  
 
сначала писал ошибку в pastvalues
 
Все ок, косяк с форматами был почемуто, ща копирует ок. В принципе я всю жизнь опциона до экспирации 15 декабря, буду данные собиарть и отслеживать изменения внутри дня и корреляцию с базовым активом, фьючерс РТС. Тоесть в пяти рабочих днях, с 10 утра до 7 вечера, 10 срезов, внедели 50 ( с учетом часов клиринга) поедее листа ексель хватит ? Я просто Range поменяю там будет гораздо больше ячеек, в т.ч. расчетных, кроме Range в коде менять надо чтонибудь еще будет ?  
 
 
Спасибо
 
Посоветуете еще плиз курсы какиенибудь по VBA, потому что базово эксель я знаю, всем на работе чтото автоматизирую, но на готовых функциях или модернизирую старые коды, но вот чтоб с 0 код написать, знаний не хватает.    
 
Хотя я экономист а не програмерша, просто наш ИТ это жесть, они стандартный банковский софт поддерживают, а вот acces, эксель - полный 0. Тоесть типа поищите в инете после часа разбирательств звучит. Последний случай у коллеги база в аксесе на все макросы и запросы выдает ошибочный аргумент. Дело было просто в размере больше 2 гигов, сжать и все. А молодцы так и не решили. Хорошо что есть этот форум. Всем Мерси, я вернусь ))))
 
Ну, вот... пришла Уля, запугала нас страшными словами "опциона", "экспирации", "базовым активом", "фьючерс РТС", "клиринга" и ушла, хоть бы объяснила нам все эти слова, я же теперь всю ночь спать не буду
 
Это термины финансовыго рынка, акции, фьючеры, опционы - их покупают продают, компании привлекают капитал выпуская акции, инвесторы размещая деньги в акциях получают дивиденды, 50%+1 акция и вы владелец бизнеса. Фьючерсы и опционы производные инстументы - дериватиы. Тоесть имеет базовый актив, например те же акции илинефть, золото, пшено, даже на погоду есть. Ими хеджируют(покрывают риски) или просто спекулируют ради прибыли. Экспирация срок истечения, вотличии от акции, которые существуют пока есть компании, их выпустившие, тоесть без срока годности, то деривативы распадаются. Как кубики льда тают.  
 
Несмотря на всю критику что онивызывали кризис, я считаю что кризис вызван жадностью банков, и привычкой жить не по средствам людей. И самое главное непроффесионализмом регуляторов фин.рынков, которые связаны с  рук-вом крупнейших фин инститов(банков и тп) порочным кругом. Заботяться не о системе а о своих кашельках и популистских мер, чтобы сохранить кресло. Боьшинство глаф экономических и др. гос. органов США ставленики тех же голдман сакс и т.п.  
Но это тема другого форума, просто ответила на вопросы, т.к. мне здесь помогли)
Страницы: 1
Читают тему
Наверх