Ako čítať údaje z online webových stránok pomocou programu Excel VBA

Zdieľať teraz:

Toto cvičenie ukazuje, ako čítať údaje z webovej lokality, v tomto prípade aktuálne výmenné kurzy z Yahoo.com.

Predpokladá sa, že čitateľ má zobrazenú pásku vývojárov a je oboznámený s editorom VBA. Ak nie, navštívte Google kartu „Vývojár Excel“ alebo „Okno kódu Excel“.

Medzi predpoklady patrí znalosť vypĺňania rozbaľovacích polí a definovania názvov.

Pracovný zošit pozostáva z dvoch listov:

Používateľské rozhranie:Užívateľské rozhranie

Rozbaľovacie polia Kúpiť a Predať odkazujú na miestny údajový list nižšie.

Tabuľka na D11 bude automaticky prilepená zo samotnej webovej stránky, pričom sa zachová používateľské formátovanie.Nakupujte a predávajte meny

Súbor xlsm pre toto cvičenie si môžete stiahnuť tu.

Vytvorenie aplikácie sami.

Vytvorte hárok s dvoma kombinovanými políčkami. Rozbaľovacie polia budú odkazovať na bunky na druhom hárku.

Rozbaľovacie polia tiež vyvolajú kód na čítanie webovej stránky pomocou Zmena event.

Názvy mien je možné prilepiť na druhý hárok („Meny“) z nižšie uvedeného zoznamu, pričom poradie triedenia je záležitosťou osobných preferencií:

ZAR
USD
EUR
GBP
CHF
AUD
NZD
JPY
CAD
SEK
DKK
NOK
MUR
HKD
SGD
ILS
AED
INR
CNY

Vložte údaje do stĺpcov B a E.

Definujte názvy a používajte indexové funkcie podľa obrázka:Nakupujte a predávajte meny

Keďže názvy boli definované v miestnom hárku s údajmi „Meny“, hárok „Hlavný“ musí na získanie hodnoty iba odkazovať na definované názvy, tj =PREDAJ a =KÚPIŤ pre bunky E10 a G10 „Hlavné“.

Budeme programovať Excel na čítanie webu. Má však svoj vlastný vstavaný proces na páse údajov, ktorého inštanciu by ste mohli chcieť zaznamenať ako makro pri vytváraní rôznych scenárov. Upozorňujeme, že konfigurácia počítača alebo prehliadača môže nepriaznivo ovplyvniť skripty webových stránok.

Kódex

Vložte modul a zadajte nasledujúce:

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 zošit ako typ xlsm.

Otestujte kód zmenou hodnôt rozbaľovacích polí a potom upravte formáty prilepenej tabuľky (štyri desatinné miesta, mriežka, tieňovanie?).

Poškodenie súborov programu Excel

O Exceli je známe, že občas poškodí súbory pri ukladaní a potom sa pokúša o vlastnú rutinu samoobnovenia, ktorá podľa mojich skúseností často jednoducho nefunguje. To môže byť pre používateľa katastrofálne, pretože je to zdrojový súbor (možno vaša jediná kópia), ktorý je zničený. Poškodené súbory programu Excel je však možné opraviť pomocou nástrojov tretích strán, čo ušetrí značný čas a námahu.

Úvod autora:

Felix Hooker je expert na obnovu dát v DataNumen, Inc., ktorá je svetovým lídrom v oblasti technológií obnovy dát, vrátane oprava rar archívne a softvérové ​​produkty na obnovenie sql. Pre viac informácií navštívte www.datanumen. S

Zdieľať teraz:

Komentáre sú uzavreté.