Como coloco os dados das tabelas de consulta VBA em uma coluna?

1

Ajudaporfavor,estouusandoocódigoabaixo.EusóprecisodosdadosparaentrarnacolunaN,aousaroloopfor,elecruzatodasascolunas.Comopossoconsertarisso?

DimWAsWorksheet:SetW=ActiveSheetLast=W.Range("A1500").End(xlUp).Row
If Last = 7 Then Exit Sub
Dim Symbols As String
Dim i As Integer
Dim j As Integer

' Code below Loops on the stock tickers and concatenate them
For i = 8 To Last Step 200
    Symbols = "" 'value to reset the string during loop

    For j = i To i + 199
        Symbols = Symbols & W.Cells(j, 1) & "+"
    Next j

        Symbols = Left(Symbols, Len(Symbols) - 1)

        'Debug.Print Symbols ' delete this later

  Dim URL As String: URL = "http://finance.yahoo.com/d/quotes.csv?s=" & Symbols & "&f=snl1p2kjr5rp6s7m3m8"

         With ActiveSheet.QueryTables.Add(Connection:="URL;" & URL, Destination:=W.Range("$N$" & i))
            .BackgroundQuery = True
            .TablesOnlyFromHTML = True
            .Refresh BackgroundQuery:=False
            .FillAdjacentFormulas = False
            .SaveData = True
        End With

Next i
    
por farai 12.12.2016 / 15:59

1 resposta

1

O problema parece ser causado pelo fato de que adicionar um novo QueryTable envia a coluna QueryTable (s) adicionada anteriormente à direita.

Isso pode ser desfeito adicionando o seguinte código imediatamente após a instrução End With . Para cada novo QueryTable após o primeiro, isso excluirá a única coluna de células à esquerda do QueryTable (s) adicionado anteriormente, realinhando-as horizontalmente.

If i <> 8 Then
    Range("N8", W.Range("$N$" & i).Offset(-1)).Delete (xlShiftToLeft)
End If
    
por 13.12.2016 / 20:23