Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / запись данных в ячейку / 20 сообщений из 20, страница 1 из 1
28.07.2011, 18:43
    #37371576
lbppb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запись данных в ячейку
При открытии файла он скачивает данные с веб-сайта, после чего обрабатывает их. Мне необходимо, чтобы каждый раз при открытии файла (а происходить это будет автоматом раз в день) он записывал обработанные данные на отдельный лист и ставил рядом дату записи. К сожалению я не очень хорошо разбираюсь с VBA. Заранее спасибо!
...
Рейтинг: 0 / 0
28.07.2011, 18:46
    #37371578
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запись данных в ячейку
lbppbПри открытии файла он скачивает данные с веб-сайта, после чего обрабатывает их.все вот это уже сделано?
...
Рейтинг: 0 / 0
28.07.2011, 19:21
    #37371638
lbppb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запись данных в ячейку
Shocker.ProlbppbПри открытии файла он скачивает данные с веб-сайта, после чего обрабатывает их.все вот это уже сделано?

Да, там пока ничего сложно нет, это начало. Файл прилагаю.
...
Рейтинг: 0 / 0
28.07.2011, 19:51
    #37371676
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запись данных в ячейку
Ну как-то так:
Sub Historical_data
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
Sub Historical_data()

Dim NewS As Worksheet
Set NewS = Worksheets.Add(, Worksheets(Worksheets.Count))
NewS.Cells( 1 ,  2 ) = "Рядом дата:"
NewS.Cells( 1 ,  3 ) = Now


    Sheets("Timing").Select
    Range("B1").Select
    Application.CutCopyMode = False
    Selection.Copy
    NewS.Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("C2").Select
    Sheets("Timing").Select
    Range("B2").Select
    Application.CutCopyMode = False
    Selection.Copy
    NewS.Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("D2").Select
    Sheets("Timing").Select
    Range("B3").Select
    Application.CutCopyMode = False
    Selection.Copy
    NewS.Select
    Range("D2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("E2").Select
    Sheets("Timing").Select
    Range("B4").Select
    Application.CutCopyMode = False
    Selection.Copy
    NewS.Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("F2").Select
    Sheets("Timing").Select
    Range("B5").Select
    Application.CutCopyMode = False
    Selection.Copy
    NewS.Select
    Range("G2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End Sub
...
Рейтинг: 0 / 0
28.07.2011, 20:25
    #37371710
kuklp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запись данных в ячейку
Можно чуть короче:
Sub Historical_data1()
Dim NewS As Worksheet
Set NewS = Worksheets.Add(, Worksheets(Worksheets.Count))
NewS.Cells(1, 2) = "Рядом дата:"
NewS.Cells(1, 3) = Date
With Sheets("Timing")
NewS.[a1].Value = .[b1].Value
NewS.[c2].Value = .[b2].Value
NewS.[d2].Value = .[b3].Value
NewS.[e2].Value = .[b4].Value
NewS.[g2].Value = .[b5].Value
End With
End Sub
...
Рейтинг: 0 / 0
28.07.2011, 20:32
    #37371715
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запись данных в ячейку
kuklpМожно чуть короче:
Может и можно, я в код автора вообще не вникал
просто дописал четыре своих строчки и сделал автозамену его целевого листа
...
Рейтинг: 0 / 0
28.07.2011, 21:04
    #37371750
lbppb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запись данных в ячейку
Shocker.Pro,

А как сделать так, чтобы не добалять новые листы, а все делать на одном?
...
Рейтинг: 0 / 0
28.07.2011, 21:20
    #37371776
lbppb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запись данных в ячейку
У меня получился вот такой код, но нужно чтобы данные записывались каждый раз, когда процедура вызыывается на строчку ниже.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Sub Historical_data()

Dim His As Worksheet
Set His = Sheets("Historical")

His.Cells( 2 ,  1 ) = Now

With Sheets("Timing")

His.[b2].Value = .[b1].Value
His.[c2].Value = .[b2].Value
His.[d2].Value = .[b3].Value
His.[e2].Value = .[b4].Value
His.[f2].Value = .[b5].Value

End With
End Sub
...
Рейтинг: 0 / 0
28.07.2011, 22:45
    #37371843
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запись данных в ячейку
Заведите переменную, учитывающую последнюю запись в "лог истории" в ячейке отдельного листа. Скажем, "Константы!СчётчикИстории"
И процедуре передавайте Range = адрес первой ячейки для записи...
Или перед каждой записью в "лист хистори" процедура должна искать последнюю запись. Методом половинного деления.
...
Рейтинг: 0 / 0
28.07.2011, 22:51
    #37371845
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запись данных в ячейку
Как-то так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Sub Historical_data()

Dim His As Worksheet, r As Integer, i As Integer
Set His = Sheets("Historical")
r = His.Columns( 2 ).End(xlDown).Row +  1 
His.Cells( 2 ,  1 ) = Now

With Sheets("Timing")
  For i =  1  To  5 
    His.Cells(r, i +  1 ).Value = .Cells(i,  2 ).Value
  Next
End With

End Sub
...
Рейтинг: 0 / 0
28.07.2011, 22:52
    #37371847
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запись данных в ячейку
AndreTMпроцедура должна искать последнюю запись. Методом половинного деления.
Вы со скукотищей меня сегодня сильно удивляете. .End(xlDown) никто не отменял :)
...
Рейтинг: 0 / 0
28.07.2011, 23:24
    #37371878
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запись данных в ячейку
Shocker.Pro+
AndreTMпроцедура должна искать последнюю запись. Методом половинного деления.
Вы со скукотищей меня сегодня сильно удивляете. .End(xlDown) никто не отменял :)Ну так готовимся к дню сисадмина... я уже начал

А если серьёзно - то лучше контролировать записи полностью, а не то, что будет импортировано...
...
Рейтинг: 0 / 0
29.07.2011, 15:00
    #37372972
lbppb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запись данных в ячейку
Мне нужна была привязка именно ко дню, в общем сделал так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Sub Historical_data()

Dim His As Worksheet, r As Integer, c As Integer
Set His = Sheets("Historical")
r = Now -  40751 
His.Cells(Now -  40751 ,  1 ) = Now

With Sheets("Timing")
  For c =  1  To  5 
    His.Cells(r, c +  1 ).Value = .Cells(c,  2 ).Value
  Next
End With

End Sub
...
Рейтинг: 0 / 0
29.07.2011, 15:12
    #37373010
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запись данных в ячейку
lbppbчтобы каждый раз при открытии файла (а происходить это будет автоматом раз в день) он записывал обработанные данные на отдельный лист lbppbсделать так, чтобы не добалять новые листы , а все делать на одном?lbppbнужно чтобы данные записывались каждый раз , когда процедура вызыывается на строчку ниже lbppbМне нужна была привязка именно ко дню
ну и кто теперь тебе помогать будет после этого?
...
Рейтинг: 0 / 0
29.07.2011, 15:34
    #37373080
lbppb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запись данных в ячейку
И еще вопрос. Планировщик задач настроен открывать файл в 23:00. Какое-то время уйдет на закачку данных с сайта. После чего мне нужно, чтобы запускалась моя процедура. После чего сохранение и файл закрывается. На какое событие повесить можно повесить запуск процедуры? AfterXmlImport не срабатывает...
...
Рейтинг: 0 / 0
29.07.2011, 15:36
    #37373086
lbppb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запись данных в ячейку
Shocker.Prolbppbчтобы каждый раз при открытии файла (а происходить это будет автоматом раз в день) он записывал обработанные данные на отдельный лист lbppbсделать так, чтобы не добалять новые листы , а все делать на одном?lbppbнужно чтобы данные записывались каждый раз , когда процедура вызыывается на строчку ниже lbppbМне нужна была привязка именно ко дню
ну и кто теперь тебе помогать будет после этого?

К сожалению задача оттачивалась по ходу исполнения, не моя прихоть...
...
Рейтинг: 0 / 0
29.07.2011, 16:12
    #37373197
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запись данных в ячейку
lbppbзакачку данных с сайтаlbppb AfterXmlImport не срабатывает...в файле кроме Sub Historical_data я ничего не нашел.
...
Рейтинг: 0 / 0
29.07.2011, 16:27
    #37373244
lbppb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запись данных в ячейку
Shocker.Prolbppbзакачку данных с сайтаlbppb AfterXmlImport не срабатывает...в файле кроме Sub Historical_data я ничего не нашел.

Выкладваю текущую версию файла.
...
Рейтинг: 0 / 0
29.07.2011, 16:32
    #37373260
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запись данных в ячейку
Не знаю, каким образом тут происходит автоматическое обновление, это уже какие-то эксельные приблуды, так что дальше я пас.
...
Рейтинг: 0 / 0
29.07.2011, 16:38
    #37373276
lbppb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запись данных в ячейку
Shocker.ProНе знаю, каким образом тут происходит автоматическое обновление, это уже какие-то эксельные приблуды, так что дальше я пас.

В любом случае БОЛЬШОЕ СПАСИБО!
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / запись данных в ячейку / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]