Conteúdo
Analisei repetidamente maneiras de importar dados da Internet para o Excel com atualização automática subsequente. Em particular:
- Em versões mais antigas do Excel 2007-2013, isso pode ser feito com uma solicitação direta da Web.
- A partir de 2010, isso pode ser feito de maneira muito conveniente com o suplemento Power Query.
A esses métodos nas versões mais recentes do Microsoft Excel, agora você pode adicionar outro – importar dados da Internet em formato XML usando funções internas.
XML (eXtensible Markup Language = Extensible Markup Language) é uma linguagem universal projetada para descrever qualquer tipo de dados. Na verdade, é texto simples, mas com tags especiais adicionadas a ele para marcar a estrutura de dados. Muitos sites fornecem fluxos gratuitos de seus dados em formato XML para qualquer um baixar. No site do Banco Central do Nosso País (www.cbr.ru), em particular, com a ajuda de uma tecnologia semelhante, são fornecidos dados sobre as taxas de câmbio de várias moedas. No site da Bolsa de Moscou (www.moex.com), você pode baixar cotações de ações, títulos e muitas outras informações úteis da mesma maneira.
Desde a versão 2013, o Excel tem duas funções para carregar diretamente dados XML da Internet em células da planilha: SERVIÇO DE INTERNET (SERVIÇO DE INTERNET) и FILTRO.XML (FILTROXML). Eles trabalham em pares – primeiro a função SERVIÇO DE INTERNET executa uma requisição para o site desejado e retorna sua resposta em formato XML, e então utilizando a função FILTRO.XML nós “analisamos” essa resposta em componentes, extraindo dela os dados que precisamos.
Vejamos o funcionamento dessas funções usando um exemplo clássico – importando a taxa de câmbio de qualquer moeda que precisamos para um determinado intervalo de datas do site do Banco Central do Nosso País. Usaremos a seguinte construção como um espaço em branco:
Aqui:
- As células amarelas contêm as datas de início e término do período de nosso interesse.
- O azul tem uma lista suspensa de moedas usando o comando Dados – Validação – Lista (Dados - Validação - Lista).
- Nas células verdes, usaremos nossas funções para criar uma string de consulta e obter a resposta do servidor.
- A tabela à direita é uma referência aos códigos de moeda (vamos precisar dela um pouco mais tarde).
Vamos!
Etapa 1. Formando uma string de consulta
Para obter as informações necessárias do site, você precisa solicitá-las corretamente. Vamos para www.cbr.ru e abrimos o link no rodapé da página principal' Recursos Técnicos'- Obtendo dados usando XML (http://cbr.ru/development/SXML/). Rolamos um pouco mais para baixo e no segundo exemplo (Exemplo 2) haverá o que precisamos – obter as taxas de câmbio para um determinado intervalo de datas:
Como você pode ver no exemplo, a string de consulta deve conter datas de início (data_req1) e finais (data_req2) do período de interesse para nós e o código da moeda (VAL_NM_RQ), cuja taxa queremos obter. Você pode encontrar os principais códigos de moeda na tabela abaixo:
Moeda | Code | | Moeda | Code |
Dólar australiano | R01010 | Litas lituanas | R01435 | |
Xelim austríaco | R01015 | cupom lituano | R01435 | |
Manat do Azerbaijão | R01020 | Leu da Moldávia | R01500 | |
Libra | R01035 | РќРµРјРµС † РєР ° СЏ РјР ° СЂРєР ° | R01510 | |
novo kwanza angolano | R01040 | florim holandês | R01523 | |
Dram Armenian | R01060 | Coroa norueguesa | R01535 | |
Rublo bielorrusso | R01090 | Zloty polonês | R01565 | |
franco belga | R01095 | escudo português | R01570 | |
O leão búlgaro | R01100 | Leu romeno | R01585 | |
Real brasileiro | R01115 | Dólar de Singapura | R01625 | |
Forint Húngaro | R01135 | Dólar do Suriname | R01665 | |
Dólar de Hong Kong | R01200 | tajique somoni | R01670 | |
dracma grego | R01205 | rublo tadjique | R01670 | |
Coroa dinamarquesa | R01215 | Lira turca | R01700 | |
Dólar dos EUA | R01235 | Manat turcomano | R01710 | |
Euro | R01239 | Novo manat turcomano | R01710 | |
Rúpia indiana | R01270 | soma uzbeque | R01717 | |
Libra irlandesa | R01305 | Hryvnia ucraniana | R01720 | |
Coroa islandesa | R01310 | karbovanets ucranianos | R01720 | |
peseta espanhola | R01315 | marca finlandesa | R01740 | |
lira italiana | R01325 | Franco francês | R01750 | |
Tenge do Cazaquistão | R01335 | Coroa checa | R01760 | |
Dólar canadense | R01350 | Coroa sueca | R01770 | |
Som do Quirguistão | R01370 | franco suíço | R01775 | |
Yuan chinês | R01375 | coroa estoniana | R01795 | |
Dinar do Kuwait | R01390 | novo dinar iugoslavo | R01804 | |
Lats letão | R01405 | Rand sul-africano | R01810 | |
Libra libanesa | R01420 | República da Coreia ganhou | R01815 | |
Yen japonês | R01820 |
Um guia completo de códigos de moeda também está disponível no site do Banco Central – consulte http://cbr.ru/scripts/XML_val.asp?d=0
Agora vamos formar uma string de consulta em uma célula em uma planilha com:
- o operador de concatenação de texto (&) para juntá-lo;
- Funcionalidades VPR (PROCV)para encontrar o código da moeda que precisamos no diretório;
- Funcionalidades TEXTO (TEXTO), que converte a data de acordo com o padrão de dia-mês-ano por meio de uma barra.
="http://cbr.ru/scripts/XML_dynamic.asp?date_req1="&ТЕКСТ(B2;"ДД/ММ/ГГГГ")& "&date_req2="&ТЕКСТ(B3;"ДД/ММ/ГГГГ")&"&VAL_NM_RQ="&ВПР(B4;M:N;2;0)
Etapa 2. Execute a solicitação
Agora usamos a função SERVIÇO DE INTERNET (SERVIÇO DE INTERNET) com a string de consulta gerada como o único argumento. A resposta será uma longa linha de código XML (é melhor ativar a quebra de linha e aumentar o tamanho da célula se você quiser vê-la inteira):
Etapa 3. Analisando a resposta
Para facilitar a compreensão da estrutura dos dados de resposta, é melhor usar um dos analisadores XML online (por exemplo, http://xpather.com/ ou https://jsonformatter.org/xml-parser), que pode formatar visualmente o código XML, adicionando recuos a ele e destacando a sintaxe com cores. Então tudo ficará muito mais claro:
Agora você pode ver claramente que os valores do curso estão enquadrados por nossas tags
Para extraí-los, selecione uma coluna de dez (ou mais – se feito com margem) células vazias na planilha (porque foi definido um intervalo de data de 10 dias) e insira a função na barra de fórmulas FILTRO.XML (FILTROXML):
Aqui, o primeiro argumento é um link para uma célula com uma resposta do servidor (B8), e o segundo é uma string de consulta em XPath, uma linguagem especial que pode ser usada para acessar os fragmentos de código XML necessários e extraí-los. Você pode ler mais sobre a linguagem XPath, por exemplo, aqui.
É importante que após inserir a fórmula, não pressione Entrar, e o atalho de teclado Ctrl+Shift+Entrar, ou seja, insira-o como uma fórmula de matriz (as chaves ao redor serão adicionadas automaticamente). Se você tiver a versão mais recente do Office 365 com suporte para matrizes dinâmicas no Excel, uma simples Entrar, e você não precisa selecionar células vazias antecipadamente – a função em si terá quantas células forem necessárias.
Para extrair datas, faremos o mesmo – selecionaremos várias células vazias na coluna adjacente e usaremos a mesma função, mas com uma consulta XPath diferente, para obter todos os valores dos atributos Date das tags Record:
=FILTER.XML(B8;”//Registro/@Data”)
Agora no futuro, ao alterar as datas nas células originais B2 e B3 ou escolher uma moeda diferente na lista suspensa da célula B3, nossa consulta será atualizada automaticamente, consultando o servidor do Banco Central para novos dados. Para forçar uma atualização manualmente, você também pode usar o atalho de teclado Ctrl+outro+F9.
- Importar taxa de bitcoin para Excel via Power Query
- Importar taxas de câmbio da Internet em versões mais antigas do Excel