Ta vaja prikazuje, kako brati podatke s spletnega mesta, v tem primeru najnovejše menjalne tečaje z Yahoo.com.
Predpostavlja se, da ima bralec prikazan trak za razvijalce in da pozna urejevalnik VBA. V nasprotnem primeru prosimo za Google »Excel Developer Tab« ali »Excel Code Window«.
Predpogoji vključujejo znanje o izpolnjevanju kombiniranih polj in določanju imen.
Delovni zvezek je sestavljen iz dveh listov:
Uporabniški vmesnik:
Kombinirana polja Nakup in prodaja se sklicujeta na spodnji lokalni podatkovni list.
Tabela na D11 bo samodejno prilepljena s samega spletnega mesta in ohranila uporabniško oblikovanje.
Xlsm za to vajo lahko prenesete tukaj.
Sestavite aplikacijo sami.
Ustvarite list z dvema kombiniranima poljima. Kombinirana polja se bodo sklicevala na celice na drugem listu.
Kombinirana polja bodo prav tako klicala kodo za branje spletnega mesta z uporabo Spreminjanje dogodek.
Imena valut lahko prilepite v drugi list (»Valute«) s spodnjega seznama, vrstni red razvrščanja pa je odvisen od osebnih želja:
| ZAR |
| ameriški dolar |
| EUR |
| britanski funt |
| CHF |
| AUD |
| NZD |
| JPY |
| CAD |
| SEK |
| DKK |
| NOK |
| MUR |
| HKD |
| SGD |
| ILS |
| AED |
| INR |
| CNY |
Podatke prilepite v stolpca B in E.
Določite imena in uporabite funkcije indeksa, kot je prikazano na sliki:
Ker so bila imena določena na lokalnem podatkovnem listu „Valute“, se mora list „Glavni“ zgolj sklicevati na definirana imena, da dobimo vrednost, tj. = PRODAT in = KUPI za „Glavni“ celici E10 oziroma G10.
Za branje spleta bomo programirali Excel. Ima pa vgrajen lasten postopek na podatkovnem traku, katerega primerek bi morda želeli posneti kot makro pri gradnji različnih scenarijev. Upoštevajte, da lahko konfiguracije računalnika ali brskalnika negativno vplivajo na skripte spletnih strani.
Kodeks
Vstavite modul in vnesite naslednje:
Option Explicit
Sub Ticker()
Dim currBuy As String
Dim currSell As String
Range("D11:F14").ClearContents 'prepare the ground for the web data
currBuy = Range("BUY") 'get variable values from Defined Names previously set up
currSell = Range("SELL")
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://finance.yahoo.com/q?s=" & currBuy & currSell & "=X", Destination:=Range("$D$11"))
.Name = "q?s=" & currSell & currBuy & "=X"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = """table1"""
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
End sub
Sub DropDown2_Change() 'This event will call the routine above. Object name might differ.
Call Ticker
End Sub
Sub DropDown1_Change()
Call Ticker
End Sub
Shranite delovni zvezek kot tip xlsm.
Preizkusite kodo tako, da spremenite vrednosti kombiniranih polj, nato pa izboljšajte formate prilepljene tabele (štiri decimalna mesta, mrežne črte, senčenja?).
Poškodba Excelovih datotek
Excel je včasih znan po tem, da poškoduje datoteke pri shranjevanju, nato pa poskuša svojo lastno rutino za obnovitev, ki po mojih izkušnjah preprosto ne deluje. Za uporabnika je to lahko katastrofalno, saj je uničena izvorna datoteka (morda vaša edina kopija). Poškodovane datoteke Excel vendar je mogoče popraviti z uporabo orodij drugih proizvajalcev, s čimer prihranite precej časa in truda.
Uvod avtorja:
Felix Hooker je strokovnjak za obnovitev podatkov v DataNumen, Inc., ki je vodilna na svetu na področju tehnologij za obnovitev podatkov, vključno z popravilo rar Arhiv in sql programske izdelke za obnovitev. Za več informacij obiščite www.datanumen.com

