Tag Archives: Web

VBA – Acquiring data from Web Pages and Web Services using WinHTTP

Ok, web is here, is there, is everywhere. Fortunately, VBA is able to get information from web pages and services using libraries available on Windows. WinHTTP is the library we are going to use to give to our VBA applications the power to get and send data to web using the HTTP protocol.

WinHTTP, as you might expect, has methods and functions to create requests based on HTTP, so, we are talking about HTTP VERBS: GET, POST, PUT, DELETE and so on. There are other, the these four are the main ones. For this article, we going to use the GET verb to create a simple request to a web page.

Even if you never heard about it, you use it all the time when um request a web page on your browser. When we use GET, it means “GET”. In HTTP context, GET something means, almost 100% of the times, get a web page. This is what happens when you type an address on your web browser and type enter.

Ok, let’s see this happens on VBA code:

Sub http()
    Dim MyRequest As Object
 
    'coloca a instância do WinHTTP na memória
    Set MyRequest = CreateObject("WinHttp.WinHttpRequest.5.1")
    MyRequest.Open "GET", "http://www.tomasvasquez.com.br"
 
    'Faz a requisição
    MyRequest.Send
 
    'obtém o conteúdo da resposta e coloca na janela de verificação imediata 
    Debug.Print MyRequest.ResponseText
 
End Sub

Well, what is exactly the same as I described earlier, but where are not in the browser. So, what we have is the HTML content of the page requested, in this particular case, my home page. 🙂

If you visit it right now and try to check the source code of the page (usually available when you press the right button of the mouse), you can see is the same we have in the Immediate Window. Well, it’s a big HTML, as you can check in the image below.

vba_winhttp_tomasvasquez

At this point, you probably figured out some possibilities for this approach. We can get any content available on the web, from web sites to content, like images and documents (ok, it’s is a quite different, but you can start from here). But, the most common usage for this kind of request is used it to call REST based services. If you are a developer, you’ve might heard a lot about it recently. And if you already needed to call one, you know exactly what you have to do from now on.

To finish this article, I’m going to improve last code to do something useful. The macro below gets the feed content from my forum and print it to Immediate Window. The feed is RSS base, so, I needed to do add some stringing code.

Sub UltimasDoForum()
    Dim MyRequest As Object, _
    resposta As String, _
    respostaParcial As String, _
    retorno As Long, _
    stringTitulo As String, _
    fimTitulo As Long
 
    'coloca a instância do WinHTTP na memória
    Set MyRequest = CreateObject("WinHttp.WinHttpRequest.5.1")
    MyRequest.Open "GET", "http://www.tomasvasquez.com.br/forum/feed.php"
 
    'Faz a requisição
    MyRequest.Send
 
    'obtém o conteúdo da resposta
    resposta = MyRequest.ResponseText
 
    stringTitulo = ""
    'procura pelo título do post, se houver
    retorno = InStr(1, resposta, stringTitulo, vbTextCompare)
 
    'itera até o próximo e até não encontrar mais
    While retorno > 0
        fimTitulo = InStr(retorno, resposta, "", vbTextCompare)
        respostaParcial = Left(resposta, fimTitulo)
        Debug.Print Right(respostaParcial, Len(respostaParcial) - retorno - Len(stringTitulo))
        resposta = Right(resposta, Len(resposta) - fimTitulo)
        retorno = InStr(retorno, resposta, stringTitulo, vbTextCompare)
    Wend
End Sub

The output is a bit dirty, but the code is clear enough to understand what is happening. Find below the result:

Macro Ultimas do Forum executada

Now it’s up to you. Enjoy!

Download the code file:

WinHTTP.zip (13.18 KiB)

References:

WinHTTP: https://msdn.microsoft.com/pt-br/library/windows/desktop/aa382925%28v=vs.85%29.aspx

Web – Aprendendo a dominar o Chrome DevTools (e porque você precisa saber disso!)

Google Developer

O Chrome definitivamente tomou seu espaço, tanto no coração dos usuários como no dos desenvolvedores.

Depois do Firefox com seus indispensáveis plugins Firebug e Web Developer, o Chrome (e outros navegadores) correram atrás para oferecer algo no mesmo nível. O fato é que a equipe do Google conseguiu. Pelo menos da experiência que tenho no desenvolvimento Web, o Firefox com seus plugins já facilitou um mundo com essas ferramentas, permitindo edição de CSS e HTML direto na página e também depuração (ou debug) de código Javascript, com a adição de mais alguns plugins.

Pois bem, o que com o Firefox se fazia depois de alguma configuração, o Chrome trouxe nativamente, fácil de acessar e tão completo quanto! A esse conjunto de funcionalidades ele deu o nome de Chrome DevTools. Se você está num Chrome neste momento(desktop), basta ir ao menu do mesmo, Ferramentas->Ferramentas para Desenvolvedor (Tools->Developer Tools).

Seu Chrome deverá mostrar uma barra de ferramentas na parte inferior do mesmo:

Chrome Dev Tools ativado

E é aqui que a brincadeira começa. Você tem domínio absoluto do conteúdo da página e pode praticamente alterar todo seu comportamento, fazer checagens, depurar código, controlar todos os arquivos que pertencem a esta página, quais as falhas, os erros, etc. A partir daqui, não me prolongarei, deixando apenas claro que se você é um desenvolvedor web, planeja ser ou se ao menos a estrutura de páginas web lhe interessam, como no caso de profissionais de usabilidade, acessibilidade e SEO, você PRECISA conhecer do Chrome DevTools!

Ele está praticamente se tornando um padrão na internet. É claro, um desenvolvedor web quer que seu site funcione em todos os navegadores, mas quando você coloca a disposição um conjunto tão poderoso de ferramentas, você faz que com a comunidade acabe preferindo sempre produzir conteúdo para tal. Aconteceu com o Internet Explorer. Prevejo que logo acontecerá com o Chrome.

Quer conhecer mais do Chrome DevTools? Deixarei abaixo links de duas séries de vídeos ótimos que ensinam os segredos dessa funcionalidade.

Explore and MasterChrome DevTools (vídeo, inglês, gratuito)

Criado em parceria com o Google e o Code School, um de meus sites de cursos de programação favorito, essa série passa quase todos os recursos da ferramenta, incluindo testes no final de cada lição.

Pode ser acessado em: http://discover-devtools.codeschool.com/

Segredos do Chrome DevTools (vídeo, português, gratuito)

O Google Developers tem um canal específico de vídeos no Youtube. Esta semana, em parceria com o Expert Zeno Rocha, o canal publicou em português uma série chamada “Segredos do Chrome DevTools”, onde é explicado rapidamente o funcionamento da ferramenta.

Pode ser acessado em: https://www.youtube.com/watch?v=XUgfwYzv-WQ

Concluindo

Como já escrevi acima, se você tem algum envolvimento com web, mesmo que seja uma linha de uma página, conhecer as capacidades do Chrome DevTools é uma obrigatoriedade atualmente.

Bons estudos!

Android – Como ver o código fonte de uma página no Chrome

chrome-android

Desenvolvedores têm necessidades estranhas. Sério!

Algumas são até justificáveis, e espero que seja o caso dessa. Recentemente tive a necessidade de ver o código fonte de uma página durante uma reunião de trabalho. Em mãos, tinha um tablet com Android.

Fui direto ver se o Google Chrome tinha a mesma opção que no desktop. Necas! É um navegador mobile, porque teria? Mas desenvolvedor é teimoso, então, bora googlear para saber quais as opções.

Diante de algumas, até mesmo navegadores alternativos, surge uma dica no santo stackoverflow.com, que serviu como uma luva! Imagine-se acessando uma página no Chrome do Android (a do blog, claro!):

Chrome Android

Se procurar a opção visualizar código fonte, verá que ela não existe e nenhum menu. Porém, note que ao ativar essa opção no Chrome para desktop, ele produz uma nova aba como mesmo endereço do site, só que com a opção “view-source:” antes do endereço.

Pois então, basta fazer o mesmo no Chrome do Android:

Chrome Android View Source

No caso do blog, ficou: view-source:https://www.tomasvasquez.com.br/blog/

Lindo!

Fora o trabalho de digitar, é exatamente a mesma coisa que no desktop. Quem sabe não dá para ativar o devtools também? 😀

Bom proveito!