Este post foi originalmente publicado em http://officevbavsto.blogspot.com/2011/09/chamando-webservices-pelo-vba.html

Neste post, eu descrevo como consumir um Web Service usando VBA.

O que é um Web Service?

Web Service é uma solução utilizada na integração de sistemas e na comunicação entre aplicações diferentes [7]. Uma definição simples de WebService pode ser “um serviço ou um pedaço de Software que está disponível na rede e usa um sistema padronizado de mensagem HTTP e XML” [8].

Você pode utilizar o Web Service para acessar rotinas de validação de cartão de crédito, endereçamento postal (CEP), calcular valores de fretes dos sites de comércio eletrônico, news de empresas, enfim, uma gama gigantesca de produtos [6]. Essencialmente, o Web Service faz com que os recursos da aplicação do software estejam disponíveis sobre a rede de uma forma normalizada [7].

Para mais informações sobre Web Service consulte os links da Referência Bibliográfica no final deste artigo. Se você quiser aprender a criar um WebService em .Net, recomendo dois artigos: Web Services[6] do site MSDN e Web Services para iniciantes[1] do site iMasters.

Pré-requisitos

Antes de começarmos, é necessário que você instale em seu computador dois Toolkits necessários: o Microsoft Office XP Web Services Toolkit 2.0 e o SOAP Toolkit 3.0.

ToolkitLink Microsoft Dowload Center
Microsoft Office XP Web Services Toolkit 2.0Download[3]
SOAP Toolkit 3.0Download[2]

Para saber se você tem o SOAP Toolkit 3.0 instalado em seu computador, veja se a biblioteca “Microsoft SOAP Type Library v3.0” está disponível no Visual Basic Editor, ao clicar em ToolsReferences:

Microsoft Office XP Web Services Toolkit 2.0

O Web Service References Tool é usado no Microsoft Office Visual Basic Editor para criar módulos de classe proxy em VBA a partir de um WSDL (Web Service Description Language) ou de um arquivo .vsdisco (Visual Studio .NET discovery) [10].

Infelizmente, ele é suportado somente nos seguintes sistemas operacionais: Windows 2000, Windows 98, Windows ME, Windows NT, Windows XP [3].

Consumindo WebServices pelo VBA

Após a instalação execute os seguintes passos:

  • Abra o Microsoft Excel;
  • Abra o VBA Editor (atalho ALT+F11);
  • Clique em Ferramentas.
  • Você verá uma nova opção chamada "Web Service Reference".

Agora, vamos usar um WebService já pronto para executarmos nosso teste.
Encontrei uma página bem interessante que lista WebService públicos: Directory of public SOAP Web Services.

Vamos usar o "GlobalWeather" cujo WSDL é http://www.webservicex.com/globalweather.asmx?WSDL.

  • No VBA Editor, clique em "Ferramentas";
  • Clique em "Web Service Reference";
  • Você verá a seguinte tela:
  • Marque a opção "Web Service URL";
  • Cole o WSDL http://www.webservicex.com/globalweather.asmx?WSDL na caixa "URL";
  • Clique em "Search";
  • Marque a opção "GlobalWeather" da caixa "Search Results:";
  • Clique em "Add";
  • Será criada a classe "clsws_GlobalWeather";
  • Crie um novo módulo de código e digite o seguinte código:
Sub teste()

    Dim ExampleVar As New clsws_GlobalWeather
    Debug.Print ExampleVar.wsm_GetWeather("Uberaba", "Brazil")
 
End Sub

Agora, execute o código (tecle F5) e veja o resultado:

Neste WebService em particular, o resultado foi um XML. Existem outros WebService que retornam classes, valores calculados e etc.
Deixo como lição de casa, o WebService Calculator: http://soaptest.parasoft.com/calculator.wsdl.

Créditos

Photo by Pixabay from Pexels

Referência Bibliográfica