A Macro do Reinaldo, deu certo!
Sem querer abusar, mas já abusando, eu não tenho muita prática com o Do While, sugerido na primeira resposta, só que a macro após salvar a planilha no seu devido lugar, ao invés de fazer o loop de novo na nova empresa, baixando as cotações da outra empresa (linha seguinte), a rotina está indo para o final sem baixar. Onde eu errei?
Veja a macro concluída:
Sub BaixarCotações()
Dim Pasta
Dim Nrsas As Integer
Dim NomePlanilha
Dim NomeEmpresa
Dim dt As Date, Td As String
Sheets("Parâmetros").Select
'Declara as variáveis
Nrsas = Worksheets("Parâmetros").Cells(Cells.Rows.Count, "A").End(xlUp).Row
Pasta = ActiveWorkbook.Path & "BalançosCotações Históricas"
dt = #9/30/2004#
For i = 2 To Nrsas
NomeEmpresa = Sheets("Parâmetros").Range("D" & i)
NomePlanilha = Sheets("Parâmetros").Range("D" & i) & " Cotacoes"
Do While dt <= Sheets("Parâmetros").Range("h1").Value
Td = Format(dt, "MM-YYYY")
Sheets(Td).Select
Td = Format(dt, "MM/YYYY")
Range("A1").Select
With ActiveSheet.QueryTables.Add(Connection:= _
"URL; http://www.bmfbovespa.com.br/sig/FormConsultaMercVista.asp?strTipoResumo=RES_MERC_VISTA&strSocEmissora=" & NomeEmpresa & "&strDtReferencia=" & Td & "&strIdioma=P&intCodNivel=2&intCodCtrl=160#", _
Destination:=Range("a1"))
.BackgroundQuery = True
.TablesOnlyFromHTML = True
.Refresh BackgroundQuery:=False
.SaveData = True
End With
Td = Format(dt, "MM-YYYY")
'Faz o teste para verificar se a empresa tem a cotação para esta data.
If Sheets(Td).Range("a4").Value Like "*Não*" Then
Sheets(Td).Select
Cells.Select
Selection.Delete Shift:=xlUp
Else
End If
dt = DateAdd("m", 3, dt)
Loop
Sheets.Select
Sheets.Copy
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:= _
Pasta & "" & NomePlanilha & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
ActiveWorkbook.Close
Call limpa
' Aqui, eu coloco +1 para ir para a linha 2 e baixar os balanços da 2º empresa.
i = i + 1
Next
End Sub
Postado : 30/12/2012 3:34 pm