Katarzyna Górska

Katarzyna Górska Student, Uniwersytet
Warszawski

Temat: Odwołania zewnętrzne?

Witam,
W pracy otrzymałam zadanie stworzenia pliku, w którym ściągałyby się aktualne kursy, ale stare kursy musiałyby zostać w arkuszu. Jak to zrobić? Zastosowałam odwołanie zewnętrzne, ale nie aktualizują mi się nowe kursy.

Dodatkowo czy jest taka możliwość w excelu żeby kurs ściągnął mi się z konkretnej daty? Np. Wykonuje zadanie 01.09 i do obliczeń są mi potrzebne kursy z 13.08 i z 17.08.

Proszę o pomoc!
Waldek Radzik

Waldek Radzik Uprzedzam lojalnie,
że prawie nie znam
sie na komputerach

Temat: Odwołania zewnętrzne?

A coś więcej na ten temat? Skąd ściągasz aktualne kursy? Gdzie i w jaki sposób są zapisane nowe / stare?

konto usunięte

Temat: Odwołania zewnętrzne?

Kiedyś robiłem coś podobnego.
Aktualne kursy ściągały się z jakiejś strony www np. do kolumny A jakiegoś arkusza, a przy otwarciu pliku uruchomiało się makro, które jeszcze przed aktualizacją przenosiło poprzednie aktualne kursy do innej kolumny.
W ten sposób w kolumnie A zawsze miałem kurs aktualny, a w pozostałych kolumnach kursy 'stare', od daty stworzenia pliku, do 'teraz'.

Co do drugiej części pytania: tak, można zrobić coś takiego. Nie wiem, czy za pomocą łączy zewnętrznych, ale można np. ściągać pliki *.txt z archiwalnymi kursami (dla spółek giełdowych coś takiego udostępnia bossa.pl), i napisać makro, które przełoży z pliku tekstowego kursy, a następnie zostawi tylko te potrzebne. Ale to byłby bardziej skomplikowany program (w moim przypadku było to tym bardziej skomplikowane, że pliki tekstowe były zapakowane w archiwum ZIP, makro musiało je rozpakować, a potem zaimportować *.txt do Excela, a następnie obrobić te dane - zamienić kropki na przecinki, itd.).Mateusz Mikulski edytował(a) ten post dnia 07.09.10 o godzinie 13:54

konto usunięte

Temat: Odwołania zewnętrzne?

A może warto skorzystać z gotowego dodatku, który wywołuje się funkcją Excela? Do ściągnięcia na stronie http://e-storm.pl/kursy/
Monika M.

Monika M. PROGRAMISTA VBA,
Excel, Access,
Outlook, Word -
SZKOLENIA

Temat: Odwołania zewnętrzne?

Marcin Molak:
A może warto skorzystać z gotowego dodatku, który wywołuje się funkcją Excela? Do ściągnięcia na stronie http://e-storm.pl/kursy/

Ciekawy dodatek, jednak kursy są pobierane ze strony autora. Autor twierdzi, że pobiera je ze strony NBP, tymczasem proszę sprawdzić, czy możliwe jest pobranie kursu z dzisiejszego dnia (godz. 20:00).
Na stronie NBP znajdziemy kurs na 2010-09-07, ale dodatek tego nie uwzględnia.

Być może baza autora zbyt rzadko jest aktualizowana?
Można sprawdzić na stronie autora, że również pytając o kurs dzisiejszego dnia przez WWW (PHP) nie otrzymamy kursów z dzisiejszego dnia.

Ostatnie kursy wg autora dodatku: http://e-storm.pl/kursy/pokaz.php
Kursy dla pojedynczych walut, tworzone według schematu adresu podanego przez autora: http://e-storm.pl/kursy/USD/2010-09-07 - zwraca 0, bo nie ma kursu na tą datę (tak samo dla pozostałych walut), a dla poprzedniego dnia (6 września) - jest.

Temat: Odwołania zewnętrzne?

Kiedyś napisałem funkcję użytkownika (cały wątek na innym forum) pobierającą kursy z oficjalnej strony NBP. Może ona być jakimś punktem wyjścia.
Function kursNBPa(waluta As String, Optional data As String) As Variant
' domyślny parametr 'data' = DZIŚ()

Static katalog As String
Static nData As Date
Static tabela As String

Dim sDir, dd As Date
Dim page As String, i As Long, T, D
Dim s As String, p1 As Long, p2 As Long

kursNBPa = CVErr(xlErrNA)

If data = "" Then data = Date

If data <> nData Then
If katalog = "" Then
With CreateObject("MSXML2.XMLHTTP.4.0")
.Open "GET", "http://www.nbp.gov.pl/Kursy/xml/dir.txt", False
.send
katalog = .responsetext
End With
End If

nData = data
dd = data
Do
With CreateObject("VBScript.RegExp")
.Pattern = "a...z" & Format(dd, "yymmdd")
.Global = True
Set sDir = .Execute(katalog)
dd = dd - 1
End With
Loop While sDir.Count = 0

tabela = sDir(0)
Set sDir = Nothing
End If

With CreateObject("MSXML2.XMLHTTP.3.0")
.Open "GET", "http://www.nbp.pl/Kursy/TabArch.aspx?n=" & tabela, False
.send
page = .responsetext
End With

T = Split(page, "<tr")
For i = LBound(T) To UBound(T)
If T(i) Like "*" & UCase(waluta) & "*" Then
D = Split(T(i), "<td")
s = D(UBound(D))
p1 = InStr(1, s, ">") + 1
p2 = InStr(p1, s, "<")
s = Mid(s, p1, p2 - p1)
kursNBPa = CDbl(s)
Exit Function
End If
Next
End Function

Wojciech Gardziński

Wypowiedzi autora zostały ukryte. Pokaż autora
Monika M.

Monika M. PROGRAMISTA VBA,
Excel, Access,
Outlook, Word -
SZKOLENIA

Temat: Odwołania zewnętrzne?

Wojciech Gardziński:
http://www.goldenline.pl/forum/1914176/xml-internet-ko...

Bez obrazy, Panie Wojtku, ale jak pełna informacja w temacie, to PEŁNA:


Obrazek
Monika M. edytował(a) ten post dnia 09.09.10 o godzinie 02:06

Wojciech Gardziński

Wypowiedzi autora zostały ukryte. Pokaż autora
Katarzyna Górska

Katarzyna Górska Student, Uniwersytet
Warszawski

Temat: Odwołania zewnętrzne?

Odpowiedzi były bardzo pomocne, dziękuję za zainteresowanie problemem :)

Pozdrawiam!

Podobne tematy


Następna dyskusja:

Wyszukiwanie odwołania




Wyślij zaproszenie do