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:
Kombinationsfelterne Køb og Sælg refererer til det lokale datablad nedenfor.
Tabellen på D11 indsættes automatisk fra selve webstedet og bevarer brugerformatering.
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:
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
