Views

...

Important:

Quaisquer soluções e/ou desenvolvimento de aplicações pessoais, ou da empresa, que não constem neste Blog podem ser tratados como consultoria freelance.

E-mails

Deixe seu e-mail para receber atualizações...

eBook Promo

Mostrando postagens com marcador Google. Mostrar todas as postagens
Mostrando postagens com marcador Google. Mostrar todas as postagens

Fazendo Buscas no Google - Excel VBA shell command to search Chrome


Este código serve para efetuarmos uma pesquisa no Google a partir do código VBA. Muitas pesquisas e ampliações podem ser executadas a partir daqui no que diz respeito a aplicabilidade.


Function GoogleSearch (nFrase As String)    

Dim ChromePath As String    
Dim search_string As String
    
Let search_string = "Amazon André Luiz Bernardes"    
Let search_string = Replace(search_string, " ", "+")
' Let ChromePath = "C:\Program Files\Google\Chrome\Application\chrome.exe"    
' Uncomment the following line and comment out previous for Windows 64 versions        

Let ChromePath = "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"

Shell ChromePath & " -url http://google.com/#q=" & search_string, vbMinimizedNoFocus    
', vbMinimizedNoFocus ' Should be defined in the global namespaceEnd

Function
⬛◼◾▪ Social Media ▪◾◼⬛
• FACEBOOK • TWITTER • INSTAGRAM • TUMBLR • GOOGLE+ • LINKEDIN • PINTEREST

⬛◼◾▪ Blogs ▪◾◼⬛ 

⬛◼◾▪ CONTATO ▪

Envie 10.000 e-Mails pelo GMAIL em 8 Passos

Envie 10.000 e-Mails pelo GMAIL em 8 Passos



Quem não é visto não é lembrado!

A máxima acima é verdadeira e talvez por causa disso sempre estejamos enviando diversas abordagens para nossos Clientes.


Apenas as Rede Sociais não são suficientes para promoverem a imersão que desejamos em nossos conteúdos.

Suponha que quisesse uma abordagem arrojada através do envio de 10.000 e-Mails com diferentes conteúdos, critérios, abordagens e perfis do público alvo. Tudo devidamente segmentado com medição online.

Imagine adicionalmente que pudéssemos controlar o envio, o retorno, e tudo o que estiver no processo.

Visualize a sensação de operar sem os limites do MS Outlook, sem restrições de anexos ou o tamanho dos e-Mails.

Veja a vantagem de não precisar compartilhar sua lista com terceiros ou disponibilizá-las em servidores que sequer sabe a procedência.

Pense na possibilidade de poder criar inúmeros conteúdos HTML para diversos e-Mails, permitindo liberdade de criação dinâmica através de código VBA:

  • Passo - Crie algumas contas no GMail para organizar o seu envio.
  • Passo Configure o GMail para o envio através do MS Excel.
  • Passo - Função de validação dos endereços de e-Mail.
  • Passo Função de controle dos intervalos de envio dos e-Mails.
  • Passo Formatação da planilha repositória da lista de e-Mails.
  • Passo Função intercambiável, modeladora do HTML do e-Mail.
  • Passo Funcionalidade de automação do processo de envio.
  • Passo Conexão e envio ao GMail.


brazilsalesforceeffectiveness@gmail.com

✔ Brazil SFE®✔ Brazil SFE®´s Facebook´s Profile  Google+   Author´s Professional Profile  ✔ Brazil SFE®´s Pinterest       ✔ Brazil SFE®´s Tweets

VBA Excel - Google Books API - Como obter dados de uma lista de livros com ISBN no Excel






















O título deste post poderia ser 'Getting data about a book using the ISBN number', mas achei melhor o título somente em português:

Google Books API - Como obter dados de uma lista de livros com ISBN no Excel

Acho que exprimirá melhor a intenção do conteúdo abaixo. Desenvolvi este conteúdo, não tanto pela utilidade prática em si, a qual não é totalmente inútil, uma vez que podemos consultar uma ampla lista de títulos de livros de uma planilha Excel, por exemplo, num dos maiores repositórios de dados sobre livros no mundo.

Minha verdadeira intenção é a de estimular a constante interação com dados oriundos da Web, neste caso a interação com a excelente API do Google Books.

É desnecessário dizer que esse código poderia ser implementado em qualquer produto da suíte MS Office, ou fora dela, que processe um código VBA.

Google Book API

Olharemos para a forma como  a API do Google Books responde a um pedido detalhado a partir do respectivo número ISBN de um livro. Usando esses dados, completaremos as colunas da nossa planilha. 

O Google oferece uma API rica e subutilizada. Neste exemplo vamos usar uma pequena parte dela para resolver um problema específico que os bibliotecários muitas vezes têm:

Como obter dados de uma lista de livros com ISBN no Excel?

Implementando o código no Excel

Digamos que precisemos completar uma tabela de números de ISBN, preenchendo várias outras colunas com atributos a partir deste número. 

A tabela completa será similar a esta:


O nosso código buscará uma coluna com o título ISBN que será usado como o pedido de livros à biblioteca do Google. Quaisquer outras colunas que correspondam aos nomes de campos retornados pelo Google serão preenchidas. Nos casos em que existam potencialmente vários valores (por exemplo, autores), serão separados por vírgulas. Todas as colunas cujas as posições não correspondam aos campos retornados pelo Google Books serão ignorados e o seu conteúdo ficará intacto.

Onde obter o código

Criaremos um módulo chamado 'isbnExample' na planilha.

Resumo dos dados

O primeiro passo  é fazer com que a tabela de entrada / saída seja abstraída da sua posição física usando classes de manipulação de dados. Em seguida, verificamos se há a coluna ISBN, processamos a tabela contra a API do Google Books, e, finalmente, atualizamos a planilha.

Public Sub isbnExample()
    Dim dSet As cDataSet
    
    Set dSet = New cDataSet
    
    With dSet
        ' criar um conjunto de dados (recordset) na planilha ISBN
        .populateData wholeSheet("isbn"), , "isbn", , , , True

        If .where Is Nothing Then
            MsgBox ("Nenhuma informação para processar...")
        Else
            'verifique temos a coluna ISBN presente
            If .headingRow.validate(True, cISBNColumnHeading) Then
                ' se não houvesse nenhuma atualização então executa o commit
                If processISBN(dSet) > 0 Then
                    .bigCommit
                End If
                
            End If
        End If
    End With
    
    Set dSet = Nothing
End Sub

Obtendo respostas da API do Google Books

Cada linha da planilhas será passada para a API com uma consulta ao número ISBN, e retornará uma string de tudo o que o Google encontrar sobre o livro.

Private Function processISBN(ds As cDataSet) As Long
    Dim dSet As cDataSet, cb As cBrowser, dr As cDataRow
    Dim jo As cJobject, job As cJobject, n As Long
    Dim sWire As String
    
    ' Recebe detalhes dum livro pelo número de ISBN.
    Set cb = New cBrowser
    Set jo = New cJobject
    
    Let n = 0
    
    For Each dr In ds.rows
        With dr.cell(cISBNColumnHeading)
            Let sWire = cb.httpGET(cISBNGoogleBooks & .toString)
            
            Set job = jo.deSerialize(sWire)
            
            If Not job.isValid Then
                MsgBox ("Código ISBN incorreto! " & .toString & "-" _
                    & sWire)
            
            ElseIf Not job.childExists("error") Is Nothing Then
            
                MsgBox ("O Google Books recusa-se operar com este ISBN " _
                        & .toString _
                        & "-" & job.child("error").serialize)
                
            ElseIf job.childExists("Items") Is Nothing _
                Or job.childExists("totalItems") Is Nothing Then
                
                MsgBox ("Não foi encontrado nenhuma informação para este ISBN " _
                        & .toString _
                        & "-" & job.serialize)
            
            ElseIf job.child("totalItems").value <> 1 Then
            
                MsgBox ("Múltiplas entradas para " _
                        & .toString _
                        & "-" & job.child("totalItems").serialize)
            
            Else
                ' Preenche a linha.
                Let n = n + rowProcess(dr, job.child("Items"))
            End If
        End With
    Next dr
    
    Let processISBN = n
End Function

Preenchendo as colunas com os dados retornados

Para cada linha que havíamos executado uma consulta, verificaremos se há qualquer nome de coluna correspondente aos nomes dos campos de resposta da consulta, e os preencheremos, então lidaremos com as várias colunas, separando-as nos vários valores por vírgulas.

Private Function rowProcess(dr As cDataRow, job As cJobject) As Long
    Dim hc As cCell, n As Long, jo As cJobject, jom As cJobject
    
    Let n = 0
    
    For Each hc In dr.parent.headings
        ' Quaisquer títulos que estiverem presentes no conjunto de dados retornados
        ' no json serão preenchidos.
        
        With hc
            If .toString <> cISBNColumnHeading Then
                Set jo = job.find(.toString)
                
                If Not jo Is Nothing Then
                    With dr.cell(.column)
                        ' Se forem múltiplas, inclue na matriz (array) separados por vírgulas
                        If jo.isArrayRoot Then
                            Let .value = vbNullString
                            
                            If jo.hasChildren Then
                                For Each jom In jo.children
                                    If .toString <> vbNullString Then
                                        Let .value = .value & ","
                                    End If
                                    
                                    Let .value = .value & jom.toString
                                Next jom
                            End If
                        Else
                            Let .value = jo.value
                        End If
                    End With
                    
                    Let n = n + 1
                End If
            End If
        End With
    Next hc
    
    Let rowProcess = n
End Function

Lembre-se que estamos apenas arranhando a superfície desta excelente API. Você poderia facilmente usar outros recursos para criar todos os tipos de consultas sofisticadas a partir do ISBN

Como sempre estou ansioso para o seu feedback, comentários e perguntas.

O que é ISBN?

International Standard Book Number, mais conhecido pela sua sigla ISBN, é o Número Padrão Internacional de Livro: um sistema identificador único para livros e publicações não periódicas. Foi criado no Reino Unido, em 1967, pela livraria W H Smith, sendo chamado inicialmente de "Standard Book Numbering" (SBN). Desde então, passou a ser amplamente empregado tanto pelos comerciantes de livros quanto pelas bibliotecas, até que, em 1972, a International Organization for Standardization transformou-o em uma norma padrão internacional: a ISO 2108.



Emissão de ISBN

A emissão dos números ISBN é específico de cada país e é adaptado aos objetivos nacionais de cada um. No Canadá, a emissão de ISBN é efetuada sem custos, tendo como objetivo estimular a cultura. No Reino Unido e Estados Unidos, a emissão do ISBN tornou-se um centro de lucro para as empresas responsáveis. Editores e autores devem portanto obter os números ISBN da agência nacional de cada pais. Uma lista de agências ISBN está disponível no site da International ISBN Agency.

Outros acrônimos conhecidos:

ASIN (Amazon Standard Identification Number)
CODEN (Publicações periódicas; substituído pelo ISSN para publicações atuais)
DOI (Digital Object Identifier)
ESTC (English Short Title Catalogue)
ETTN (Electronic Textbook Track Number)
ISAN (International Standard Audiovisual Number)
ISMN (International Standard Music Number)
ISWC (International Standard Musical Work Code)
ISRC (International Standard Recording Code)
ISSN (International Standard Serial Number)
ISWN (International Standard Wine Number)
LCCN (Library of Congress Control Number)
OCLC (Online Computer Library Center number)
SICI (Serial Item and Contribution Identifier)

Tags: W H Smith, Tips, Google, API, Excel, VBA, Google Books, ISBN




VBA Excel - Automação do Google Tradutor - Google Translate by Internet Explorer Automation



Sim, meus caros, é possível traduzirmos alguns textos com certa velocidade e comodidade usado um código VBA que utiliza o Google Tradutor pela automação do Internet Explorer controlados via Excel.

Mas talvez esteja neste exato momento como que atônito imaginando como isso pode ser útil num Relatório, ou num Dashboard. Talvez pergunte-se: Seria útil na minha aplicação? 

Meus caros, todos nós desenvolvemos soluções por aí. De vez em quando, ou quase sempre no caso de alguns, precisamos desenvolver soluções para a América Latina ou para a Europa. Isso demanda camadas e mais camadas de interfaces para Formulários, Relatórios, Gráficos, Infográficos, Dashboards, Scorecards, etc... 

Com as funcionalidades que veremos mais abaixo no artigo, poderemos resolver tudo isso no início da aplicação, talvez atualizando uma tabela interna que contenha todos os títulos usados nela e Voilá temos a nossa interface traduzida para os mais diversos idiomas!

Este programa grava automaticamente o texto do Excel no Internet Explorer e usa o serviço do Google Tradutor para traduzir o texto na linguagem que desejarmos. Será possível traduzir de e para vários idiomas diferentes, bastando alterar o código deste no programa. 


O que é o Google Tradutor?
Google Tradutor é um serviço de tradução gratuito que fornece traduções instantâneas em 64 idiomas  diferentes (em Janeiro de 2013). Ele pode traduzir palavras, frases e páginas da web em qualquer combinação dos idiomas aceitos. Com o Google Tradutor, esperamos disponibilizar informações úteis para todos, independentemente do idioma em que estiverem escritas.

Como funciona?
Quando gera uma tradução, o Google Tradutor procura padrões em centenas de milhares de documentos para ajudar a decidir qual é a melhor tradução. Ao detectar padrões em documentos que já foram traduzidos por tradutores humanos, o Google Tradutor pode fazer escolhas inteligentes e determinar qual é a tradução apropriada. Esse processo de procurar padrões em grandes quantidades de texto é chamado de "tradução automática estatística". Como as traduções são geradas por máquinas, nem todas serão perfeitas. Quanto mais documentos traduzidos por humanos o Google Tradutor puder analisar em um idioma específico, melhor será a qualidade da tradução. É por esse motivo que a precisão da tradução às vezes varia de acordo com o idioma.

Hoje, todos os principais idiomas estão disponíveis no Google Translate. É um dos poucos serviços que permite a tradução de frases inteiras não apenas palavras. O serviço é gratuito e pode ser executado através de API

Divirta-se!


Public Sub Google_Translate()

Dim Google_Translate_Internet_Explorer_Automation As Object

Set Google_Translate_Internet_Explorer_Automation = CreateObject("InternetExplorer.Application")

Google_Translate_Internet_Explorer_Automation.Navigate "http://translate.google.com/translate_t#"
Google_Translate_Internet_Explorer_Automation.Visible = True
Wait_Between_Google_Translate_Cycles = Range("G1").Value

Let Column = 0

While Range("f9").Offset(0, Column).Value <> tom

    Do While Google_Translate_Internet_Explorer_Automation.busy
        Call WaitSeconds(Wait_Between_Google_Translate_Cycles)
    Loop
    
    Let to_language_code = Range("f9").Offset(0, Column).Value

    Do While Google_Translate_Internet_Explorer_Automation.busy
        Call WaitSeconds (Wait_Between_Google_Translate_Cycles)
    Loop

    Let Google_Translate_Internet_Explorer_Automation.document.forms("text_form").elements(5).Value = to_language_code

    Do While Google_Translate_Internet_Explorer_Automation.busy
        Call WaitSeconds (Wait_Between_Google_Translate_Cycles)
    Loop

    Let rad = 0

    While Range("c10").Offset(rad, 0).Value <> tom

        If Range("f10").Offset(rad, Column).Value = tom Then

            Let from_language_code = Range("a10").Offset(rad, 0).Value
            Let Google_Translate_Internet_Explorer_Automation.document.forms("text_form").elements(4).Value = from_language_code

            Do While Google_Translate_Internet_Explorer_Automation.busy
                Call WaitSeconds (Wait_Between_Google_Translate_Cycles)
            Loop

            Let Google_Translate_Text = Range("c10").Offset(rad, 0).Value

            While Google_Translate_Internet_Explorer_Automation.busy
                Call WaitSeconds (Wait_Between_Google_Translate_Cycles)
            Wend

            Let Google_Translate_Internet_Explorer_Automation.document.forms("text_form").elements("source").Value = Google_Translate_Text

            While Google_Translate_Internet_Explorer_Automation.busy
                Call WaitSeconds (Wait_Between_Google_Translate_Cycles)
            Wend

            Google_Translate_Internet_Explorer_Automation.document.getElementById("text_form").submit

            While Google_Translate_Internet_Explorer_Automation.busy
                Call WaitSeconds (Wait_Between_Google_Translate_Cycles)
            Wend

            Let dd2 = Google_Translate_Internet_Explorer_Automation.document.forms(1).elements(4).Value

            While Google_Translate_Internet_Explorer_Automation.busy
                Call WaitSeconds (Wait_Between_Google_Translate_Cycles)
            Wend

            Let Google_Translate_Variable1 = Replace(dd2, Chr(13), "")
            Let Range("f10").Offset(rad, Column).Value = Google_Translate_Variable1

        End If

        Let rad = rad + 1
    Wend

    Let Column = Column + 1
Wend

Google_Translate_Internet_Explorer_Automation.Quit

Set Google_Translate_Internet_Explorer_Automation = Nothing

End Sub

Public Sub WaitSeconds(sek)


Let newHour = Hour(Now())

Let newMinute = Minute(Now())

Let newSecond = Second(Now()) + sek

Let waitTime = TimeSerial(newHour, newMinute, newSecond)



Application.Wait waitTime


End Sub

Tags: VBA, Excel, Google, Google Translate, IE, Internet Explorer, Automation, API


VBA Excel - Usando a API do Google Maps para retornar a distância em Km entre dois lugares - Google Maps distance function



Qual pode ser a utilidade de uma função que faça isso, retorne a distância em quilômetros, entre 2 pontos geográficos?

Este post pode ser uma ferramenta interessante para acompanhar a distância percorrida pelos materiais de construção da fonte até o local de destino, permitindo calcular o custo do trajeto;

Se você estiver engajado em algum processo ambiental, também poderá utilizar essa funcionalidade para calcular o impacto ambiental em carbono por tonelada km;

Enfim, poderá usar a sua criatividade para torná-la funcional.

Considere este post como sua primeira incursão no mundo Google, fazendo com que a nossa planilha MS Excel retorne informações a partir da API do GMAPS (Google Maps).

Já lhes adianto: 

Antes que desejem submeter listas enormes de consulta ao servidor GMAPS

Somente são permitidas 2.500 pesquisas ao servidor num período de 24 horas.

A função personalizada para o MS Excel trabalha passando dois nomes de lugar - ou códigos postais - e encontra a rota mais curta entre eles usando o planejador de rotas do Gmaps . Chamaremos de Km_Distance e a sintaxe para usá-la será:

Km_Distance (origem, destino)

Ela retornará um valor da distância entre os dois locais em quilômetros e se qualquer tipo de erro ocorrer então a função retorna 0.

Dois nota de advertência:
1) Os termos de uso do GMaps determinam que só estão autorizados a usar a sua API usando o seu mapa. Assim, caso deseje fazer sem seguir tais especificações de uso da API, isso será por sua conta e risco (por isso demonstro o mapa acima).
2) O Gmaps geralmente lhe dará uma rota com base num caminho que pode não ser o mais adequado ao seu propósito. Caso descubra um modo de acertarmos isso, por favor entre em contato para melhorarmos.
Divirta-se:


Function Km_Distance (Origin As String, Destination As String) As Double
    ' Requires a reference to Microsoft XML, v6.0
    ' Draws on the stackoverflow answer at bit.ly/parseXML
    
    Dim myRequest As XMLHTTP60
    Dim myDomDoc As DOMDocument60
    Dim distanceNode As IXMLDOMNode
    
    Let Km_Distance = 0
    
    ' Check and clean inputs
    On Error GoTo exitRoute
    
    Let Origin = Replace(Origin, " ", "%20")
    Let Destination = Replace(Destination, " ", "%20")
    
    ' Lendo os dados XML da API do Google Maps.
    Set myRequest = New XMLHTTP60
    
        & Origin & "&destination=" & Destination & "&sensor=false", False
    myRequest.send
    
    ' Tornando o XML legível por usar o XPath
    Set myDomDoc = New DOMDocument60
    
    myDomDoc.LoadXML myRequest.responseText
    
    ' Obtendo o valor da distância entre os nós.
    Set distanceNode = myDomDoc.SelectSingleNode("//leg/distance/value")
    If Not distanceNode Is Nothing Then Km_Distance = distanceNode.Text / 1000

exitRoute:
    ' Tidy up
    Set distanceNode = Nothing
    Set myDomDoc = Nothing
    Set myRequest = Nothing
End Function

Para que utilize este código com sucesso, certifique-se de colocar o código acima num módulo da planilha.

Defina a referência a biblioteca Microsoft XML, v6.0 - Ferramentas> Referências> Microsoft XML, v6.0

Tags: VBA, Excel, GMAPS, GOOGLE, Google Maps, transport, VBA, API, distance, distância, XML, Reference, Referência



eBooks VBA na AMAZOM.com.br

LinkWithinBrazilVBAExcelSpecialist

Related Posts Plugin for WordPress, Blogger...

Vitrine