2010-10-01 6 views
0

J'ai besoin d'aide pour créer une macro VBA qui télécharge les données de prix de clôture directement à partir du site Web de Yahoo Finance et enregistre les données dans une colonne Excel.Téléchargement et formatage de données Web avec Excel VBA

Informations générales: C'est le lien vers la base de données de citation historique de Yahoo Finance -

Pour télécharger un fichier TXT: http://ichart.finance.yahoo.com/table.txt?s= "StockTicker" & d = "EndingMonth" & e = "EndingDay" & f = "EndingYear" & & g = d a = "EndingMonth" & b = "EndingDay" & c = "EndingYear" & ignorer = .txt

formatage Issue: Par défaut, c'est-à-dire à l'aide de l'Assistant Importation de données Web d'Excel, Excel importe la totalité de la table, ce qui inclut plus de colonnes que nécessaire. J'essaie d'isoler la colonne "close". J'ai créé une macro qui met en forme la table pour isoler la « fermer » la colonne, mais cette macro me demande de télécharger manuellement les données de Yahoo Finance en tant que fichier txt:

Sub Test_DownloadTextFile() 
    Dim text As String 
    'The variables for this URL (in light blue) should be retrieved from the spreadsheet, i.e. "StockTicker" will reference a cell with the ticker symbol "AAPL" in it and that will appear in the URL' 
    text = DownloadTextFile("http://ichart.finance.yahoo.com/table.txt?s="StockTicker"&d="EndingMonth"&e="EndingDay"&f="EndingYear"&g=d&a="EndingMonth"&b="EndingDay"&c="EndingYear"&ignore=.txt") 

    'At this point I should have the historical quotes table stored in the variable text. How do I select the 4th column and import it into a specific spreadsheet column?' 
    Debug.Print text 
    End Sub 

Comment puis-je créer une macro qui: 1. Se réfère à la feuille de calcul pour les variables clés, par exemple « StockTicker », « EndingMonth », etc .. 2. télécharge les données historiques correspondantes de Yahoo Finance 3. Importe les données relatives aux prix de clôture des données sur une seule colonne dans la feuille de calcul

Je serais très reconnaissant une solution pratique à ce problème. Faites-moi savoir si j'ai besoin de clarifier ma question ou la tâche à accomplir. Je vous remercie!

Répondre

1

Découvrez this SO discussion. Plusieurs suggestions qui semblent valables.

+0

Merci pour ce lien. J'aime l'idée de stocker le fichier txt dans une variable. Est-il possible d'avoir une URL dynamique qui change lorsque l'utilisateur change le symbole du téléscripteur, date de début et de fin, ect? Aussi, maintenant que les données sont stockées dans une variable, il devrait être relativement simple de sélectionner une colonne spécifique et d'importer cette colonne dans la feuille de calcul, non? Merci de votre aide. – AME

2

Suggestion: cela semble être le cas parfait pour une requête Web.
Avez-vous une raison de ne pas l'utiliser? Vous pouvez copier uniquement les colonnes dont vous avez besoin par la suite. Vous n'avez pas spécifié votre version Excel, mais en 2003, c'est sur Données/Importer des données externes.

+0

J'utilise Excel 2007. Le problème avec une requête web standard est qu'il retournera la table entière et je n'ai besoin que d'une seule colonne dans la table. Existe-t-il un moyen de modifier la requête Web avec VBA? – AME

+0

Je ne pense pas, puisque vous devez sélectionner un tableau HTML. Mais vous pouvez avoir cette requête Web dans une feuille séparée et le n soit Rechercher ou copier/coller la colonne dont vous avez besoin. Si la taille est critique, vous pouvez même avoir cette requête Web dans un classeur distinct à partir duquel vous copiez/collez la valeur dans votre classeur principal. –