Ho scritto una macro, che ogni volta che apro il file excel, legge in ogni riga della colonna A il codice di borsa dell'azienda (AAPL per Apple, FB per Facebook ecc..) e nella corrispondente riga della colonna D inserisce il valore di capitalizzazione attuale.
Al termine lo script mette in ordine le aziende secondo il valore di capitalizzazione contenuto nella colonna D.
Il problema dello script che ho fatto è che ogni volta che viene eseguito inserisce una riga vuota tra la riga 1 che contiene l'intestazione delle colonne e la riga 2. Se c'è qualcuno con un po' di conoscenze di macro di excel vorrei che mi correggesse lo script risolvendo questo problema.
codice:
Sub Auto_Open()
Dim QuerySheet As Worksheet
Dim DataSheet As Worksheet
Dim qurl As String
Dim i As Integer
Dim j As Integer
Dim k As Integer
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.Calculation = xlCalculationManual
Set DataSheet = ActiveSheet
Columns("A:I").Sort key1:=Range("A1"), _
order1:=xlAscending, Header:=xlYes
i = 2
qurl = "http://download.finance.yahoo.com/d/quotes.csv?f=j1&s=" + Cells(i, "A")
While Cells(i, 1) <> ""
i = i + 1
qurl = qurl + "+" + Cells(i, "A")
Wend
Range(Cells(2, "D"), Cells(i, "D")).ClearContents
QueryQuote:
With ActiveSheet.QueryTables.Add(Connection:="URL;" & qurl, Destination:=DataSheet.Range("D2"))
.BackgroundQuery = True
.TablesOnlyFromHTML = False
.Refresh BackgroundQuery:=False
.SaveData = True
End With
Columns("A:I").AutoFit
Columns("D").Replace _
What:="B", Replacement:="", _
SearchOrder:=xlByColumns, MatchCase:=True
Columns("A:I").Sort key1:=Range("D1"), _
order1:=xlDescending, Header:=xlYes
End Sub