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