Sådan læses data fra online websider med Excel VBA

Denne øvelse viser, hvordan man læser data fra et websted, i dette tilfælde up-to-the-minute valutakurser fra Yahoo.com.

Det antages, at læseren har udviklerbåndet vist og er fortrolig med VBA Editor. Hvis ikke, bedes du Google “fanen Excel-udvikler” eller “vinduet Excel-kode”.

Forudsætninger inkluderer viden om udfyldning af kombinationsbokse og definition af navne.

Arbejdsmappen består af to ark:

Brugergrænsefladen:Brugergrænsefladen

Kombinationsfelterne Køb og Sælg refererer til det lokale datablad nedenfor.

Tabellen på D11 indsættes automatisk fra selve webstedet og bevarer brugerformatering.Køb og sælg valutaer

Xlsm til denne øvelse kan downloades link..

Byg applikationen selv.

Opret et ark med to kombinationsbokse. Kombinationsfelterne henviser til celler på et andet ark.

Kombinationsfelterne påkalder også koden for at læse hjemmesiden ved hjælp af Skift tilfælde.

Valuta navne kan indsættes i det andet ark (“Valutaer”) fra nedenstående liste, hvor sorteringsrækkefølgen er et spørgsmål om personlig præference:

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

Indsæt dataene i kolonne B og E.

Definer navne og brug indeksfunktioner som vist på illustrationen:Køb og sælg valutaer

Da navne er defineret på det lokale datablad "Valutaer", skal ark "Main" blot henvise til de definerede navne for at få værdien, dvs. = SÆLG og = KØB for henholdsvis "Main" celler E10 og G10.

Vi programmerer Excel til at læse internettet. Det har dog sin egen indbyggede proces på databåndet, en forekomst, som du måske vil optage som en makro i opbygningen af ​​forskellige scenarier. Bemærk, at computer- eller browserkonfigurationer kan påvirke websidescripts negativt.

Koden

Indsæt et modul, og indtast følgende:

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

Gem projektmappen som type xlsm.

Test koden ved at ændre værdierne i kombinationsfelterne, og smør derefter formaterne for den indsatte tabel (fire decimaler, gitterlinjer, skygger?).

Korruption af Excel-filer

Excel er til tider kendt for at ødelægge filer ved at gemme, derefter forsøge sin egen selvgendannelsesrutine, som ofte efter min erfaring simpelthen ikke fungerer. Dette kan være katastrofalt for brugeren, da det er kildefilen (muligvis din eneste kopi), der ødelægges. Beskadigede Excel-filer kan dog repareres ved hjælp af tredjepartsværktøjer, hvilket sparer betydelig tid og kræfter.

Forfatter Introduktion:

Felix Hooker er en datagendannelsesekspert i DataNumen, Inc., som er verdens førende inden for datagendannelsesteknologier, herunder reparere rar arkiv og SQL-genopretningssoftwareprodukter. For mere information besøg www.datanumen.com

Kommentarer er lukket.