Захват данных и создание истории в Exel

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
skoroteev
Сообщения: 1
Зарегистрирован: 06 дек 2007, 12:32

Уважаемые специалисты,

Как вы знаете, в Exel существует импорт данных (в моем случае из Интернета). То есть, это представляет собой одну строку с динамически изменяющимися данными в каждой ячейке.

Вопрос: Каким образом можно "захватывать" данные в каждой из ячеек динамической области и фиксировать их в виде массива в Exel, чтобы каждое новое изменение отображалось (фиксировалось) в соответствующей ячейке строкой ниже? Другими словами, чтобы получалась история изменений.

Сергей
packer
Сообщения: 17
Зарегистрирован: 16 ноя 2007, 13:00
Откуда: Ekaterinburg
Контактная информация:

skoroteev писал(а):Уважаемые специалисты,

Как вы знаете, в Exel существует импорт данных (в моем случае из Интернета). То есть, это представляет собой одну строку с динамически изменяющимися данными в каждой ячейке.

Вопрос: Каким образом можно "захватывать" данные в каждой из ячеек динамической области и фиксировать их в виде массива в Exel, чтобы каждое новое изменение отображалось (фиксировалось) в соответствующей ячейке строкой ниже? Другими словами, чтобы получалась история изменений.

Сергей
Наверное, нужно смотреть в сторону обработки события Change (Значение ячейки рабочего листа изменено пользователем или внешней ссылкой) рабочего листа, на кот-м расположена динамическая строка.

Код: Выделить всё

Public MyRange as Range
Private Sub Worksheet_Change (ByVal Target As Excel.Range)
'тут определили диапазон MyRange, в кот-м отслеживаете изменения, например
Set MyRange=Range("A1:E1")
If Not Intersect(Target, MyRange) Is Nothing Then _
 Call MakePhoto 'Если изменена ячейка в интересующем нас диапазоне, то вызываем процедуру "моментального фото"
End Sub

Sub MakePhoto()
Dim DestinationCell As Range
Dim rwcount As Long
rwcount = Range("A1").CurrentRegion.Rows.Count
Set DestinationCell = Range(Cells(rwcount + 1, 1), Cells(rwcount + 1, 1))
 MyRange.Copy _
    Destination:=DestinationCell

End Sub
Подразумевается, что все дела делаются с 1-м и темже листом книги, кот-й является активным.
PS Код кривой - ничего своего подобного готового под рукой нету
PPS И вообще сама задача тоже какая-то подозрительная
Ответить