Kako čitati podatke sa internetskih stranica sa Excel VBA

Podijeli sada:

Ova vježba pokazuje kako čitati podatke s web stranice, u ovom slučaju najnovije tečajeve valuta sa Yahoo.com.

Pretpostavlja se da čitač ima prikazanu Developer traku i da je upoznat sa VBA Editorom. Ako ne, molimo Google "Excel Developer Tab" ili "Excel Code Window".

Preduvjeti uključuju poznavanje popunjavanja kombiniranih okvira i definiranja imena.

Radna sveska se sastoji od dva lista:

Korisničko sučelje:Korisnički interfejs

Kombinovani okviri za kupovinu i prodaju upućuju na lokalni list podataka u nastavku.

Tabela na D11 će biti automatski zalijepljena sa same web stranice, zadržavajući korisničko formatiranje.Kupujte i prodajte valute

Xlsm za ovu vježbu možete preuzeti OVDJE.

Izgradite aplikaciju sami.

Napravite list sa dva kombinovana okvira. Kombinovani okviri će referencirati ćelije na drugom listu.

Kombinirani okviri će također pozvati kod za čitanje web stranice, koristeći promjena događaj.

Nazivi valuta se mogu zalijepiti u drugi list (“Valuta”) sa liste ispod, pri čemu je redoslijed sortiranja stvar ličnih preferencija:

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

Zalijepite podatke u kolone B i E.

Definirajte imena i koristite funkcije indeksa prema ilustraciji:Kupujte i prodajte valute

Pošto su imena definisana na lokalnom listu podataka „Valuta“, list „Glavna“ treba samo da se odnosi na definisana imena da bi se dobila vrednost, tj. =PRODAJ i =KUPOVI za „Glavne“ ćelije E10 i G10 respektivno.

Mi ćemo programirati Excel za čitanje weba. Međutim, ima svoj ugrađeni proces na vrpci podataka, čiju instancu biste možda željeli snimiti kao makro u izgradnji različitih scenarija. Imajte na umu da konfiguracije računara ili pretraživača mogu negativno uticati na skripte web stranica.

Kodeks

Ubacite modul i unesite sljedeće:

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

Sačuvajte radnu svesku kao tip xlsm.

Testirajte kod promjenom vrijednosti kombinovanih okvira, a zatim poboljšajte formate zalijepljene tablice (četiri decimale, linije mreže, sjenke?).

Oštećenje Excel datoteka

Poznato je da Excel ponekad kvari datoteke prilikom spremanja, nakon čega pokušava vlastitu rutinu samooporavka koja često, prema mom iskustvu, jednostavno ne radi. Ovo može biti katastrofalno za korisnika, jer je izvorni fajl (verovatno vaša jedina kopija) taj koji je uništen. Oštećeni Excel fajlovi međutim, može se popraviti korištenjem alata treće strane, štedeći znatno vrijeme i trud.

Uvod za autora:

Felix Hooker je stručnjak za oporavak podataka DataNumen, Inc., koji je svjetski lider u tehnologijama za oporavak podataka, uključujući Popravak rar arhiva i sql softverski proizvodi za oporavak. Za više informacija posjetite www.datanumen.com

Podijeli sada:

Komentari su zatvoreni.