J'essaie d'extraire un nombre très spécifique de la page Yahoo Finance mais je me suis coincé. Le lien sur lequel j'essaie de tirer cette information est:
http://finance.yahoo.com/q/hp?s=AAPL+Historical+Prices
Je m'intéresse à get le numéro 111.31 qui est répertorié près du haut de cette page en gras. J'ai écrit le code suivant pour extraire cette information, mais chaque fois que je l'exécute, il dit que «Objet ne supporte pas cette propriété ou cette méthode». Je soupçonne que l'erreur réside dans la ligne où j'utilise getElementsByClass
et getElementsById
pour extraire ces données.
Sub GetQuote() Dim IE As Object Set IE = CreateObject("InternetExplorer.Application") With IE .Visible = True .navigate "http://finance.yahoo.com/q/hp?s=AAPL+Historical+Prices" Do While .busy: DoEvents: Loop Do While .ReadyState <> 4: DoEvents: Loop With .document Application.Wait (Now + #12:00:05 AM#) Sheets("Sheet1").Range("A3") = .getElementsByClass("time_rtq_ticker").getElementsById("yfs_184_aapl").innerText End With End With Set IE = Nothing End Sub
Pouvez-vous, tout le monde, jeter un oeil et me faire savoir où j'ai mal tourné et comment je peux réparer cela?
La méthode getElementsByClassName renvoie une collection d'un ou plusieurs objects. Vous devez fournir l'index (c'est-à-dire la position ) de l'élément dans la collection. Essayer,
Sheets("Sheet1").Range("A3") = .getElementsByClass("time_rtq_ticker")(0).getElementById("yfs_184_aapl").innerText
En fait, l'identifiant yfs_184_aapl
est unique sur cette page. Vous avez seulement besoin,
Sheets("Sheet1").Range("A3") = .getElementById("yfs_184_aapl").innerText
Notez que la méthode getElementById est singulière, pas getElementsById
.