Gegevens van online webpagina's lezen met Excel VBA

Deze oefening laat zien hoe u gegevens van een website leest, in dit geval actuele wisselkoersen van Yahoo.com.

Aangenomen wordt dat de lezer het ontwikkelaarslint heeft weergegeven en bekend is met de VBA-editor. Als dit niet het geval is, gebruik dan Google "Excel Developer Tab" of "Excel Code Window".

Vereisten omvatten kennis van het vullen van keuzelijsten met invoervak ​​en het definiëren van namen.

Het werkboek bestaat uit twee bladen:

De gebruikersinterface:De gebruikersinterface

De keuzelijsten met invoervak ​​Kopen en verkopen verwijzen naar het onderstaande lokale gegevensblad.

De tabel op D11 wordt automatisch van de website zelf geplakt, waarbij de opmaak van de gebruiker behouden blijft.Koop en verkoop valuta

De xlsm voor deze oefening kan worden gedownload hier.

Zelf de applicatie bouwen.

Maak een blad met twee keuzelijsten met invoervak. De keuzelijsten met invoervak ​​verwijzen naar cellen op een tweede blad.

De combo-boxen zullen ook de code aanroepen om de website te lezen, met behulp van de Veranderen evenement.

Valutanamen kunnen in het tweede blad ("Valuta's") uit de onderstaande lijst worden geplakt, waarbij de sorteervolgorde een kwestie van persoonlijke voorkeur is:

ZAR
USD
EUR
GBP
CHF
AUD
NZD
Japanse Yen
CADXPERT / LANDXPERT
€
USD
NOK
MUR
HKD
SGD
ILS
AED
INR
CNY

Plak de gegevens in de kolommen B en E.

Definieer namen en gebruik indexfuncties zoals aangegeven in de afbeelding:Koop en verkoop valuta

Aangezien namen zijn gedefinieerd op het lokale gegevensblad "Valuta's", hoeft blad "Hoofd" alleen naar de gedefinieerde namen te verwijzen om de waarde te krijgen, dwz = VERKOPEN en = KOPEN voor respectievelijk de "Hoofd" -cellen E10 en G10.

We gaan Excel programmeren om het web te lezen. Het heeft echter een eigen ingebouwd proces op het datalint, waarvan u een exemplaar misschien wilt opnemen als een macro bij het bouwen van verschillende scenario's. Merk op dat computer- of browserconfiguraties een nadelige invloed kunnen hebben op webpagina-scripts.

De code

Voeg een module in en voer het volgende in:

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

Sla de werkmap op als type xlsm.

Test de code door de waarden van de keuzelijsten met invoervak ​​te wijzigen en vervolgens de formaten van de geplakte tabel op te frissen (vier decimalen, rasterlijnen, arcering?).

Corruptie van Excel-bestanden

Van Excel is soms bekend dat het bestanden bij het opslaan corrumpeert, waarna het zijn eigen zelfherstelroutine probeert, die naar mijn ervaring vaak gewoon niet werkt. Dit kan rampzalig zijn voor de gebruiker, aangezien het bronbestand (mogelijk uw enige kopie) wordt vernietigd. Beschadigde Excel-bestanden kan echter worden gerepareerd met tools van derden, wat veel tijd en moeite bespaart.

Auteur Introductie:

Felix Hooker is een expert op het gebied van gegevensherstel DataNumen, Inc., de wereldleider in technologieën voor gegevensherstel, waaronder reparatie rar archief en sql-herstelsoftwareproducten. Voor meer informatie bezoek www.datanumen.com

Reacties zijn gesloten.