Usando o Visual Basic VBA com HTTPS e SSL

É possível acessar páginas da Web com HTTPS e que exigem login / senha usando o Excel? Bem, sim e não. Aqui está o acordo e por que não é tão direto.

Primeiro, vamos definir termos

HTTPS é por convenção o identificador para o que é chamado SSL (Secure Sockets Layer). Isso realmente não tem nada a ver com senhas ou logins como tal. O que o SSL faz é configurar uma conexão criptografada entre um cliente da Web e um servidor, para que nenhuma informação seja enviada entre os dois "de maneira clara" - usando transmissões não criptografadas. Se as informações incluem informações de login e senha, criptografar a transmissão os protege de olhares indiscretos... mas a criptografia de senhas não é um requisito. Eu usei a frase "por convenção" porque a tecnologia de segurança real é SSL. O HTTPS sinaliza apenas ao servidor que o cliente planeja usar esse protocolo. O SSL pode ser usado de várias outras maneiras.

Então... se o seu computador envia uma URL para um servidor que usa SSL e essa URL começa com HTTPS, seu computador está dizendo ao servidor:

instagram viewer

"Ei, senhor servidor, vamos dar um aperto de mão nessa coisa de criptografia, para que o que dissermos daqui em diante não seja interceptado por um bandido. E quando terminar, vá em frente e me envie a página endereçada pelo URL ".

O servidor retornará as principais informações para configurar uma conexão SSL. Cabe ao seu computador realmente fazer algo com ele.

Isso é 'chave' (trocadilho... bem, meio que pretendido) para entender o papel de VBA no Excel. A programação no VBA precisaria dar o próximo passo e implementar o SSL no lado do cliente.

Navegadores da Web 'reais' fazem isso automaticamente e mostram um pequeno símbolo de bloqueio na linha de status para mostrar que isso foi feito. Mas se o VBA apenas abrir a página da Web como um arquivo e ler as informações contidas nas células de uma planilha (um exemplo muito comum), o Excel não fará isso sem alguma programação adicional. A oferta agradável do servidor de dar um aperto de mão e configurar a comunicação SSL segura é ignorada pelo Excel.

Mas você pode ler a página solicitada exatamente da mesma maneira

Para provar isso, vamos usar a conexão SSL usada pelo serviço Gmail do Google (que começa com "https") e codificar uma chamada para abrir essa conexão como se fosse um arquivo.

Isso lê a página da web como se fosse um arquivo simples. Como as versões recentes do Excel importam HTML automaticamente, após a execução da instrução Open, a página do Gmail (menos os objetos HTML dinâmicos) é importada para uma planilha. O objetivo das conexões SSL é trocar informações, e não apenas ler uma página da web; portanto, isso normalmente não o levará muito longe.

Para fazer mais, você precisa, de alguma maneira, no seu programa VBA do Excel, oferecer suporte ao protocolo SSL e talvez também ao DHTML. Você provavelmente está melhor começando com o Visual básico em vez de Excel VBA. Em seguida, use controles como o Internet Transfer API WinInet e chame objetos do Excel, conforme necessário. Mas é possível usar o WinInet diretamente de um programa VBA do Excel.

WinInet é uma API - Interface de Programação de Aplicativo - para WinInet.dll. É usado principalmente como um dos principais componentes do Internet Explorer, mas você pode usá-lo diretamente do seu código e também para HTTPS. Escrever o código para usar o WinInet é pelo menos uma tarefa de dificuldade média. Em geral, as etapas envolvidas são:

  • Conecte-se ao servidor HTTPS e envie uma solicitação HTTPS
  • Se o servidor solicitar um certificado de cliente assinado, reenvie a solicitação após anexar o contexto do certificado
  • Se o servidor estiver satisfeito, a sessão será autenticada

Existem duas diferenças principais na gravação do código WinInet para usar https, em vez do HTTP normal:

Você também deve ter em mente que a função de trocar um login / senha é logicamente independente da criptografia da sessão usando https e SSL. Você pode fazer um ou outro, ou ambos. Em muitos casos, eles andam juntos, mas nem sempre. E a implementação dos requisitos do WinInet não faz nada para responder automaticamente a uma solicitação de login / senha. Se, por exemplo, o login e a senha fizerem parte de um formulário da Web, talvez você precise descobrir o nomes dos campos e atualize os campos do Excel VBA antes de "postar" a sequência de logon no servidor. Responder corretamente à segurança de um servidor da Web é uma grande parte do que um navegador da Web faz. Por outro lado, se a autenticação SSL for necessária, considere usar o objeto InternetExplorer para efetuar login a partir do VBA ...

A conclusão é que é possível usar https e fazer login em um servidor a partir de um programa Excel VBA, mas não espere escrever o código que faz isso em apenas alguns minutos.

instagram story viewer