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):
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!