Arquivo da tag: ServerXMLHTTP

VBA – Verificando se o site está online

Mais uma que veio do fórum, que como já disse inúmeras vezes, é um espaço pelo qual sou apaixonado.

A pergunta era simples. Como verificar se um site está online. Ao procurar uma alternativa simples, cheguei no seguinte post do site MrExcel (excelente referência em Excel VBA):

http://www.mrexcel.com/forum/excel-questions/707305-excel-visual-basic-applications-check-if-certain-website-online.html

Que nos deu a seguinte função:

Function getHtmlFromUrl(pURL As String) As String
     Dim resText As String
     Dim objHttp As Object
     Set objHttp = CreateObject("MSXML2.ServerXMLHTTP")
     objHttp.Open "GET", pURL, False
     objHttp.Send ""
     getHtmlFromUrl = Mid(objHttp.ResponseText, 1, 255) 
End Function

Essa função utiliza a biblioteca MSXML2.ServerXMLHTTP para fazer uma requisição para uma URL válida e retorna o texto de resposta. Útil, porém, para somente checar se o site está online, não é necessário ler todo o HTML. Basta checar seu status, ou o HTTP Code da resposta. Se for 200, está tudo ok!

Por fim, transformei o código acima no seguinte:

Sub EstaOnline()
 Debug.Print IsSiteOnline("http://www.tomasvasquez.com.br")
End Sub
 
Function IsSiteOnline(pURL As String) As Boolean
On Error GoTo TrataErro
 Dim resText As String
 Dim objHttp As Object
 Set objHttp = CreateObject("MSXML2.ServerXMLHTTP")
 objHttp.Open "GET", pURL, False
 objHttp.Send ""
 IsSiteOnline = objHttp.Status = 200
 
TrataSaida:
 Exit Function
TrataErro:
 IsSiteOnline = False
 GoTo TrataSaida
End Function

Como apoio, criei a SubOnline como exemplo de chamada para a IsSiteOnline, que faz a verificação e retorna True se estiver, False, do contrário.

Para saber mais sobre o ServerXMLHTTP:

http://msdn.microsoft.com/en-us/library/ms766431(v=vs.85).aspx

Arquivo do exemplo:

http://www.tomasvasquez.com.br/forum/download/file.php?id=2246

Bom proveito!