Kuinka lukea tietoja online-verkkosivuilta Excel VBA: lla

Tämä harjoitus osoittaa, kuinka voit lukea tietoja verkkosivustolta, tässä tapauksessa ajantasaiset valuuttakurssit Yahoo.com-sivustolta.

Oletetaan, että lukijalla on kehittäjänauha ja hän tuntee VBA-editorin. Jos ei, ota Googlen “Excel Developer -välilehti” tai “Excel Code Window”.

Edellytykset sisältävät tiedon yhdistelmälaatikoiden täyttämisestä ja nimien määrittelemisestä.

Työkirja koostuu kahdesta arkista:

Käyttöliittymä:Käyttöliittymä

Osta ja myy -yhdistelmäruudut viittaavat alla olevaan paikalliseen tietosivuun.

D11: n taulukko liitetään automaattisesti verkkosivustolta säilyttäen käyttäjän muotoilu.Osta ja myy valuuttoja

Tämän harjoituksen xlsm voidaan ladata täältä.

Rakenna sovellus itse.

Luo taulukko, jossa on kaksi yhdistelmäruutua. Yhdistelmäruudut viittaavat toisen arkin soluihin.

Yhdistelmäruudut kutsuvat myös koodin lukemaan verkkosivustoa käyttämällä Muutos tapahtuma.

Valuutanimet voidaan liittää alla olevasta luettelosta toiseen taulukkoon ("Valuutat"), lajittelujärjestys on henkilökohtaisten mieltymysten mukainen:

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

Liitä tiedot sarakkeisiin B ja E.

Määritä nimet ja käytä hakemistotoimintoja kuvan mukaisesti:Osta ja myy valuuttoja

Koska nimet on määritelty paikallisessa tietolomakkeessa "Valuutat", taulukon "Main" on vain viitattava määriteltyihin nimiin arvon saamiseksi, ts. = MYY ja = OSTA "Pää" -soluille E10 ja G10.

Ohjelmoimme Excelin lukemaan verkkoa. Sillä on kuitenkin oma sisäänrakennettu prosessi Data-valintanauhalle, jonka haluat esimerkiksi tallentaa makrona rakentaessasi erilaisia ​​skenaarioita. Huomaa, että tietokoneen tai selaimen kokoonpanot voivat vaikuttaa haitallisesti verkkosivujen komentosarjoihin.

Koodi

Aseta moduuli ja kirjoita seuraava:

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

Tallenna työkirja nimellä xlsm.

Testaa koodi muuttamalla yhdistelmäruutujen arvoja ja korosta sitten liitetyn taulukon muodot (neljä desimaalia, ruudukot, varjostukset?).

Excel-tiedostojen vioittuminen

Excelin tiedetään toisinaan vioittavan tiedostoja tallennuksen yhteydessä, minkä jälkeen se yrittää omaa palautumisrutiiniaan, joka kokemukseni mukaan ei yksinkertaisesti toimi. Tämä voi olla katastrofaalista käyttäjälle, koska lähdetiedosto (mahdollisesti ainoa kopio) tuhoutuu. Vaurioituneet Excel-tiedostot voidaan kuitenkin korjata kolmannen osapuolen työkaluilla, mikä säästää huomattavasti aikaa ja vaivaa.

Tekijän esittely:

Felix Hooker on tietojen palauttamisen asiantuntija DataNumen, Inc., joka on maailman johtava tietojen palautustekniikoissa, mukaan lukien korjaus rar arkisto ja sql-palautusohjelmistotuotteet. Lisätietoja osoitteessa www.datanumen.com

Kommenttien lisääminen on estetty.