Se você não quiser continuar criando novas planilhas, retire o comando que faz isso!
ActiveWorkbook.Worksheets.Add
Você também está adicionando uma nova consulta toda vez que executa este código. Seria melhor atribuir um nome à consulta e depois simplesmente atualizá-lo toda vez que precisar alterar o URL.
A maneira mais fácil é inserir uma consulta na web manualmente no local desejado e atribuir um nome a ela. Vamos supor que você tenha chamado myquery
.
Em vez de ActiveSheet.QueryTables.Add
, algo ao longo destas linhas:
Dim mytable As QueryTable
' If you dont set the name, it will take ?date=20110716 as a
' name when it is added for the first time
Set mytable = ActiveSheet.QueryTables("myquery")
' Update the connections URL
mytable.Connection = "URL;" & ActiveSheet.Cells(1, 1).Text
' Update the request - it will return the new data to the spreadsheet
mytable.Refresh
Você não pode presumir que haverá apenas uma consulta em uma planilha, pois ela é adicionada com facilidade. Então você deve referenciar a consulta correta.