Toto cvičení ukazuje, jak číst data z webové stránky, v tomto případě aktuální směnné kurzy z Yahoo.com.
Předpokládá se, že čtenář má zobrazenou pásku Developer a je obeznámen s editorem VBA. Pokud ne, prosím Google „Excel Developer tab“ nebo „Excel Code Window“.
Předpoklady zahrnují znalost naplňování combo-boxů a definování názvů.
Sešit se skládá ze dvou listů:
Uživatelské rozhraní:
Rozbalovací pole Nákup a prodej odkazují na místní datový list níže.
Tabulka na D11 bude automaticky vložena ze samotného webu, přičemž se zachová uživatelské formátování.
Soubor xlsm pro toto cvičení lze stáhnout zde.
Vytvoření aplikace sami.
Vytvořte list se dvěma combo boxy. Pole se seznamem budou odkazovat na buňky na druhém listu.
Rozbalovací seznamy také vyvolají kód pro čtení webu pomocí Přeměna událost.
Názvy měn lze vložit do druhého listu („Měny“) ze seznamu níže, pořadí řazení je věcí osobních preferencí:
| ZAR |
| USD |
| EUR |
| GBP |
| CHF |
| CZK |
| NZD |
| JPY |
| CAD |
| SEK |
| DKK |
| NOK |
| MUR |
| HKD |
| SGD |
| ILS |
| AED |
| INR |
| CNY |
Vložte data do sloupců B a E.
Definujte jména a používejte funkce indexu podle obrázku:
Protože názvy byly definovány v místním datovém listu „Měny“, list „Hlavní“ musí pouze odkazovat na definované názvy, aby získal hodnotu, tj. =SELL a =BUY pro buňky „Hlavní“ E10 a G10 v tomto pořadí.
Budeme programovat Excel pro čtení webu. Má však svůj vlastní vestavěný proces na pásu dat, jehož instanci byste mohli chtít zaznamenat jako makro při vytváření různých scénářů. Pamatujte, že konfigurace počítače nebo prohlížeče může nepříznivě ovlivnit skripty webových stránek.
Kodex
Vložte modul a zadejte následující:
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
Uložte sešit jako typ xlsm.
Otestujte kód změnou hodnot polí se seznamem a poté upravte formáty vložené tabulky (čtyři desetinná místa, mřížka, stínování?).
Poškození souborů aplikace Excel
Je známo, že Excel občas poškozuje soubory při ukládání a poté se pokouší o vlastní rutinu samoobnovy, která podle mých zkušeností často prostě nefunguje. To může být pro uživatele katastrofální, protože je zničen zdrojový soubor (možná vaše jediná kopie). Poškozené soubory Excel lze však opravit pomocí nástrojů třetích stran, což ušetří značný čas a úsilí.
Úvod autora:
Felix Hooker je odborník na obnovu dat v oboru DataNumen, Inc., která je světovým lídrem v oblasti technologií pro obnovu dat, včetně opravit rar archiv a SQL softwarové produkty pro obnovu. Pro více informací navštivte www.datanumen.com
