Denne øvelsen viser hvordan du leser data fra et nettsted, i dette tilfellet oppdaterte valutakurser fra Yahoo.com.
Det antas at leseren har utviklerbåndet vist og er kjent med VBA Editor. Hvis ikke, vennligst Google "Excel Developer Tab" eller "Excel Code Window".
Forutsetninger inkluderer kunnskap om å fylle ut kombinasjonsbokser og definere navn.
Arbeidsboken består av to ark:
Brukergrensesnittet:
Kombinasjonsboksene Kjøp og salg refererer til det lokale dataarket nedenfor.
Tabellen på D11 vil automatisk limes inn fra selve nettstedet, og brukerformateringen beholdes.
Xlsm for denne øvelsen kan lastes ned her..
Bygg applikasjonen selv.
Lag et ark med to kombinasjonsbokser. Kombinasjonsboksene vil referere til celler på et andre ark.
Kombinasjonsboksene vil også påkalle koden for å lese nettstedet ved å bruke Endring hendelse.
Valutanavn kan limes inn i det andre arket ("Valutaer") fra listen nedenfor, sorteringsrekkefølgen er et spørsmål om personlig preferanse:
| ZAR |
| USD |
| EUR |
| GBP |
| CHF |
| AUD |
| NZD |
| JPY |
| CAD |
| SEK |
| DKK |
| NOK |
| WALL |
| HKD |
| SGD |
| ILS |
| AED |
| INR |
| CNY |
Lim inn dataene i kolonne B og E.
Definer navn og bruk indeksfunksjoner i henhold til illustrasjonen:
Siden navn er definert på det lokale dataarket "Valuta", må arket "Hoved" kun referere til de definerte navnene for å få verdien, dvs. =SELG og =KJØP for henholdsvis "Hoved"-celler E10 og G10.
Vi skal programmere Excel for å lese nettet. Den har imidlertid sin egen innebygde prosess på Data-båndet, en forekomst som du kanskje vil ta opp som en makro når du bygger forskjellige scenarier. Vær oppmerksom på at datamaskin- eller nettleserkonfigurasjoner kan påvirke nettsideskriptene negativt.
Koden
Sett inn en modul, og skriv inn 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
Lagre arbeidsboken som type xlsm.
Test koden ved å endre verdiene til kombinasjonsboksene, og finjuster deretter formatene til den limte tabellen (fire desimaler, rutenett, skygger?).
Korrupsjon av Excel-filer
Excel er til tider kjent for å ødelegge filer ved lagring, og deretter forsøke sin egen selvgjenopprettingsrutine som ofte, etter min erfaring, rett og slett ikke fungerer. Dette kan være katastrofalt for brukeren, siden det er kildefilen (muligens din eneste kopi) som blir ødelagt. Skadede Excel-filer kan imidlertid repareres ved hjelp av tredjepartsverktøy, noe som sparer betydelig tid og krefter.
Forfatterintroduksjon:
Felix Hooker er en datagjenopprettingsekspert innen DataNumen, Inc., som er verdensledende innen datagjenopprettingsteknologier, inkludert reparasjon rar arkiv~~POS=TRUNC og sql-programvareprodukter. For mer informasjon besøk www.datanumen. Med
