Como consumir Web Services usando VBA - Windows 7 e Office 2010
Este post foi originalmente publicado em http://officevbavsto.blogspot.com/2013/05/chamando-webservices-pelo-vba-usando.html
No artigo Como consumir Web Services usando VBA mencionei que o Microsoft Office XP Web Services Toolkit 2.0 é suportado somente nos seguintes sistemas operacionais: Windows 2000, Windows 98, Windows ME, Windows NT, Windows XP [2].
Neste artigo apresento uma maneira de você consumir Web Service através de VBA utilizando o Microsoft Windows 7 e o Microsoft Office 2010.
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) [8].
Infelizmente, ele é suportado somente nos seguintes sistemas operacionais: Windows 2000, Windows 98, Windows ME, Windows NT, Windows XP [2].
Se você tentar utilizar o AddIn Microsoft Office XP Web Services Toolkit 2.0 no Microsoft Office 2010 com o Sistema Operacional Windows 7, receberá a seguinte mensagem de erro ao clicar na opção Ferramentas – Web Service Reference, no Visual Basic Editor.
SOAP Toolkit 3.0
Antes de iniciarmos, é necessário instalar o SOAP Toolkit 3.0 [1] em seu computador.
O SOAP Toolkit permite que um aplicativo cliente consuma métodos Web Service [3].
Consumindo o Web Service
Primeiro, vamos adicionar referência “Microsoft Soap Type Library 3.0”:
- No Microsoft Excel 2010, clique na guia Desenvolvedor;
- Clique no botão Visual Basic;
- No Visual Basic Editor, clique em Ferramentas;
- Clique em Referências;
- Localize e marque a biblioteca “Microsoft Soap Type Library v3.0” (Figura 2);
- Clique em OK.
Agora, insira um novo módulo de código e digite o seguinte:
Sub ConsomeWS()
Dim clsSoapClient As SoapClient30
End Sub
Na Tabela 1 (acima), começamos nosso código digitando uma variável do tipo SoapClient30
. A classe SoapClient30
representa um cliente para enviar mensagens SOAP usando protocolos de transporte independentes [4].
Neste artigo, utilizaremos como exemplo o mesmo Web Service que usamos no artigo Chamando WebServices pelo VBA. Trata-se de um Web Service de domínio público chamado GlobalWeather o qual retorna as condições de tempo atual de acordo com o país e cidade especificados.
Digite o seguinte código:
Sub ConsomeWS()
Dim clsSoapClient As SoapClient30
Dim c_WSDL_URL As String
c_WSDL_URL = "http://www.webservicex.com/globalweather.asmx?WSDL"
End Sub
Na código acima, criamos outra variável chamada de c_WSDL_URL
. Em seguida, atribuímos o endereço do WSDL do Web Service GlobalWeather.
WSDL (Web Services Description Language) é uma linguagem baseada em XML utilizada para descrever Web Services e como acessá-los [5].
Continuando nosso código, digite o seguinte:
Sub ConsomeWS()
Dim clsSoapClient As SoapClient30
Dim c_WSDL_URL As String
c_WSDL_URL = "http://www.webservicex.com/globalweather.asmx?WSDL"
Set clsSoapClient = New SoapClient30
clsSoapClient.MSSoapInit c_WSDL_URL
End Sub
No código acima criamos uma instância da classe SoapClient30 e chamamos o método MSSoapInit passando como parâmetro a variável c_WSDL_URL, que contém o endereço do WSDL do Web Service GlobalWeather.
O método MSSoapInit inicia a comunicação com o Web Service [6]. Este método requer que passemos como parâmetro o caminho do WSDL [6]. Este método possui como parâmetros opcionais o nome e a porta do serviço. O método utiliza a primeira porta e serviço disponível se você não especificar estes valores [7].
E para concluir, vamos consumir o método GetWeather passando como parâmetro a cidade de Uberaba e o país Brasil. Lembrando que como o serviço é de domínio internacional, precisamos especificar o nome do país em inglês (Brazil).
Sub ConsomeWS()
Dim clsSoapClient As SoapClient30
Dim c_WSDL_URL As String
c_WSDL_URL = "http://www.webservicex.com/globalweather.asmx?WSDL"
Set clsSoapClient = New SoapClient30
clsSoapClient.MSSoapInit c_WSDL_URL
Debug.Print clsSoapClient.GetWeather("Uberaba", "Brazil")
Set clsSoapClient = Nothing
End Sub
Créditos
Referência Bibliográfica
- "Microsoft Soap Toolkit Download." Microsoft Soap Toolkit Download. N.p., n.d. Web. 11 May 2013. http://microsoft-soap-toolkit.iwdownload.com/;
- "Download Microsoft Office XP Web Services Toolkit 2.0 from Official Microsoft Download Center." Microsoft Corporation. N.p., n.d. Web. 11 May 2013. http://www.microsoft.com/en-us/download/details.aspx?id=15036;
- "SOAP Toolkit (Windows CE 5.0)." MSDN – the Microsoft Developer Network. N.p., n.d. Web. 11 May 2013. http://msdn.microsoft.com/en-us/library/ms897379.aspx;
- "SoapClient Class (Microsoft.Web.Services3.Messaging)." MSDN – the Microsoft Developer Network. N.p., n.d. Web. 11 May 2013. http://msdn.microsoft.com/en-us/library/microsoft.web.services3.messaging.soapclient.aspx;
- "WSDL Tutorial." W3Schools Online Web Tutorials. N.p., n.d. Web. 11 May 2013. http://www.w3schools.com/wsdl/;
- Benz, Brian. XML programming bible. New York: Wiley, 2003. Print;
Mueller, John. Special edition using SOAP. Indianapolis, Ind.: Que, 2002. Print; - "Calling XML Web Services from Office VBA Using the Web Service References Tool." MSDN – the Microsoft Developer Network. N.p., n.d. Web. 11 May 2013. http://msdn.microsoft.com/en-us/library/office/aa140260(v=office.10).aspx.