Meu comentário acima foi apenas destinado a abrir algumas possibilidades que você pode ter em mãos.
O PowerQuery é um plug-in gratuito para o Office 2013. No Office 2016 ele faz parte do Excel e não é mais um plug-in.
De qualquer forma, você parece preferir a abordagem de usar uma tabela temporária ou uma variável de tabela em seu SQL. Por isso, vou elaborar um pouco mais sobre essa abordagem:
No final, você desejará uma consulta semelhante a esta:
set nocount on;
declare @tblVAT table
(
Country nvarchar(50),
VAT decimal(9, 7)
);
insert into @tblVAT
(Country, VAT)
values (N'Germany', 0.19),
(N'Frence', 0.20),
(N'Spain', 0.21);
select tc.Name,
tc.ID,
case when tc.Country is null then tv.Country
else tc.Country
end as Country,
tv.VAT
from dbo.tblCustomers as tc
full outer join @tblVAT as tv
on tv.Country = tc.Country;
Observe a importância de
set nocount on;
no início da consulta SQL acima. Sem isso não funcionará! Uma vez que você tenha esta consulta, você pode simplesmente colá-la no Excel usando o menu
Data
► Get External Data
► From SQL Server
. Em uma primeira etapa, você obterá a tabela do cliente e, em uma segunda etapa, refinará a consulta para incluir a variável da tabela, conforme descrito acima. Aqui está um breve resumo visual:Eu acho que, neste momento, as únicas perguntas restantes são:
- Como você cria dinamicamente a instrução SQL acima e
- como você obtém a tabela acima no Excel e atualizada com esta instrução SQL atualizada.
Para criar dinamicamente o SQL acima, você pode dar uma olhada no seguinte:Usando um array ou dicionário como from cláusula no sql no excel vba
Ainda ontem eu respondi uma pergunta semelhante onde um usuário queria passar o conteúdo de uma planilha do Excel como uma tabela criada dinamicamente para um SQL Server. Você pode facilmente adaptar (ou até mesmo usá-lo como está) para seu propósito.
Para a última etapa (atualize esta tabela no Excel com esta nova consulta SQL), você pode usar o gravador de macro e fazer o que fiz na captura de tela acima. O código criado automaticamente é nada mais/menos do que eu proporia a você.
Então, aí está. Deixe-me saber se eu não fui claro o suficiente ou se você precisar de mais detalhes para entender esta solução.