2017-10-20 29 views
0

J'essaie d'extraire les tables de WSJ Futures mais je souhaite pouvoir modifier la date dans l'adresse Web. Mon espoir est d'utiliser le code ci-dessous mais de faire du site une référence de cellule. Des idées sur comment faire ce travail ou un code différent qui me donnerait le même résultat avec une référence de cellule pour le site?Utiliser une référence de cellule pour la connexion dans GetWebTable

Sub GetWebTable() 
    With ActiveSheet.QueryTables.Add(Connection:="http://www.wsj.com/mdc/public/page/2_3023-fut_metal-futures-20170901.html?mod=mdc_pastcalendar", Destination:=Range("a1")) 
     .Refresh BackgroundQuery:=False 
     .SaveData = True 
    End With 
End Sub 

Répondre

0

Essayez ceci. Il va vous chercher la table. Regardez de plus près cette partie Connection:="URL;" & URL, dans le script. Vous avez foiré là-bas.

Sub GetWebTable() 
    Dim URL As String 
    URL = "http://www.wsj.com/mdc/public/page/2_3023-fut_metal-futures-20170901.html?mod=mdc_pastcalendar" 

    With ActiveSheet.QueryTables.Add(Connection:="URL;" & URL, Destination:=Range("A1")) 
     .Refresh BackgroundQuery:=False 
     .SaveData = True 
    End With 
End Sub 

EDIT:

Si vous souhaitez analyser une table spécifique autre que tout, il vous suffit de trouver son numéro d'index comme je l'ai fait ci-dessous:

Sub GetWebTable() 
    Dim URL As String 
    URL = "http://www.wsj.com/mdc/public/page/2_3023-fut_metal-futures-20170901.html?mod=mdc_pastcalendar" 

    With ActiveSheet.QueryTables.Add(Connection:="URL;" & URL, Destination:=Range("A1")) 
     .WebTables = "3" 'You can parse any specific table as well. For more than one table change the parameter "2,3" like this 
     .Refresh 
    End With 

End Sub 
+0

Cela tire la table mais parce qu'il a aussi l'adresse Web codée, il tire les données d'aujourd'hui à chaque fois et ne suit pas l'adresse A1 avec une date de changement. (la date est la partie 20170901 du code) D'autres idées sur la façon de contourner la fonction de calendrier? –