Arquivo da categoria: Microsoft Office

Dicas sobre aplicativos Microsoft Office em geral

Python no Excel, para onde isso vai?

Python no Excel
Python no Excel

Em Agosto de 2023 tivemos a surpresa de ter a integração com Python anunciada para uma futura atualização do Excel. Uau! Isso é grande coisa e temos que prestar atenção no que isso significa, principalmente para eliminar impressões erradas que estão sendo criadas em torno disso.

Como um prelúdio, aviso que tudo que escrevo aqui é baseado inteiramente na minha opinião e nas informações públicas sobre o assunto, referências no fim do texto.

Python vs VBA

Cada célula do meu corpo, principalmente as dedicadas a programação querem que o Python seja o substituto do VBA. Permita-me ser claro neste ponto: Não é.

Não há nada, ou pouco para quem é programador de aplicações VBA nesta integração do Python com Excel que está sendo entregue, pelo menos do que foi apresentado.

Portanto, nobre programador VBA, não se anime muito. O máximo que vai acontecer é você evitar ter que criar as UDFs no VBA resolvendo tudo dentro de um bloco sucinto de Python.

Para quem é o Python no Excel

É bom que isso esteja bem claro: ninguém, (tirando a própria MS e o time de produto do Office) tem a menor ideia até o presente momento de quem é o público alvo desta implementação.

Seu tivesse que apostar, iria em duas frentes:

  1. O time do Office está mirando num público de data mining/data science, em outras palavras, os analistas de dados. Quando ferramentas como o Excel, Powers*, Tableus, entre outras, começam a dar trabalho para grandes massas de dados, estes costumam recorrer ao Python. Há muito o que desenrolar aqui, já que não é só o Python, mas sim um micro-ecossistema deste criado para atender este público
  2. Como o Python está se tornando um linguagem de programação de uso “quase” geral, pode aí haver uma intenção de proporcionar um ambiente familiar para o mercado e seus usuários. O que me faz descrer um pouco desta teoria é que eles já tentaram isso com o ScriptLab via Javascript, outra linguagem largamente utilizado. Só o tempo dirá.

Mas, para quem é o Python no Excel

Já tentei responder isso acima, assim como vários outros colegas que amam o Excel. O fato é que, não se sabe ainda no que isso vai dar.

A Microsoft é especialista em errar, mas quando acerta, é pra valer. Exemplos há aos montes, o próprio Excel é um, já que carrega essa empresa nas costas por décadas.

Por isso, é cedo para prever a aceitação que essa brincadeira terá. Até uns 5 anos, Power Query e Power BI eram coisas além do alcance dos meros escritores de fórmulas. Hoje é até difícil negar que eles vieram para ficar.

Como entusiasta, estou empolgado. Como programador, cético. Como usuário do Excel, indiferente. Como analista de dados, instigado.

O Python no Excel é para mim

Essa é fácil. Não. Mas porquê?

Eu sou um programador, gosto de código, mais do que isso, gosto de liberdade criativa. Abrir o VBA me dá uma sensação tão boa de criação que não tem como comparar o prompt do Python dentro de uma célula substituindo isso.

Adicionalmente, o Python não executa localmente. É aqui que mora o sucesso, ou talvez o fracasso dessa implementação: segurança, o câncer que acompanha a suíte Office por décadas do qual a Microsoft quer se livrar a todo custo.

Concluindo…

É cedo, não dá pra concluir muita coisa, principalmente do meu ponto de vista, que é a de um programador que gosta de VBA e pouco trabalhou com o lado Data Science do Excel.

Estou sim muito curioso para saber o que os colegar do Power PI tem a dizer sobre isso. A vocês, precisando de uma dica de Python, estamos aí.

Aguardem as cenas dos próximos capítulos. Tenho a sensação de que o Python no Excel veio para ficar.

Referências

StackOverFlow 2023 Survey: https://survey.stackoverflow.co/2023/#section-most-popular-technologies-programming-scripting-and-markup-languages
Python in Excel by Leila Gharani: https://youtu.be/FbBXtqtRnWU?si=f2X3wolD9c0fN-MP
Microsoft Excel just got Python by Fireship: https://youtu.be/8ofsE7xiGho?si=JvyPZ236Oi-O1VF4

Automatizando Tarefas: Uma Comparação entre VBA e PowerShell

Quando se trata de automatizar tarefas, os desenvolvedores têm diferentes opções à disposição. Duas linguagens populares para automação são o VBA (Visual Basic for Applications) e o PowerShell. Embora tenham propósitos semelhantes, eles possuem abordagens e pontos fortes diferentes. Neste artigo, exploraremos as semelhanças e diferenças entre o VBA e o PowerShell, juntamente com exemplos de código em cada linguagem.

VBA: Automação dentro de Aplicativos

O VBA é amplamente utilizado em aplicativos como Excel, Word e Access para automatizar tarefas e estender a funcionalidade. Ele oferece um ambiente familiar para desenvolvedores que trabalham com aplicativos do Microsoft Office. Aqui está um exemplo de uso do VBA para copiar arquivos de uma pasta de origem para uma pasta de destino com base em um critério de pesquisa:

Sub CopiarArquivos()
    Dim caminhoOrigem As String
    Dim caminhoDestino As String
    Dim nomeArquivo As String
    Dim arquivo As Variant
    
    ' Define os caminhos de origem e destino
    caminhoOrigem = "C:\PastaOrigem"
    caminhoDestino = "C:\PastaDestino"
    
    ' Percorre os arquivos na pasta de origem
    nomeArquivo = Dir(caminhoOrigem & "\*.txt") ' Critério de pesquisa para arquivos .txt
    
    Do While nomeArquivo <> ""
        ' Copia cada arquivo para a pasta de destino
        FileCopy caminhoOrigem & "\" & nomeArquivo, caminhoDestino & "\" & nomeArquivo
        
        ' Obtém o próximo arquivo
        nomeArquivo = Dir()
    Loop
    
    ' Exibe uma mensagem quando concluído
    MsgBox "Arquivos copiados com sucesso!"
End Sub

Neste trecho de código VBA, especificamos os caminhos de origem e destino e usamos a função Dir para obter uma lista de arquivos na pasta de origem que correspondam ao critério de pesquisa especificado (neste caso, “*.txt” para arquivos de texto). Em seguida, percorremos cada arquivo e usamos a declaração FileCopy para copiá-lo para a pasta de destino.

PowerShell: Automação Poderosa em Linha de Comando

O PowerShell é uma linguagem de script em linha de comando desenvolvida pela Microsoft, focada em administração de sistemas e tarefas de automação. Ele oferece uma ampla gama de cmdlets e acesso ao .NET Framework para capacidades avançadas de automação. Aqui está um exemplo de uso do PowerShell para copiar arquivos de uma pasta de origem para uma pasta de destino com base em um critério de pesquisa:

$caminhoOrigem = "C:\PastaOrigem"
$caminhoDestino = "C:\PastaDestino"

# Obter os arquivos que correspondem ao critério de pesquisa
$arquivos = Get-ChildItem -Path $caminhoOrigem -Filter "*.txt" -Recurse

# Copiar os arquivos para a pasta de destino
foreach ($arquivo in $arquivos) {
    Copy-Item -Path $arquivo.FullName -Destination $caminhoDestino
}

# Exibir uma mensagem quando concluído
Write-Host "Arquivos copiados com sucesso!"

Neste trecho de código PowerShell, especificamos os caminhos de origem e destino e usamos o cmdlet Get-ChildItem para obter uma lista de arquivos na pasta de origem que correspondam ao critério de pesquisa especificado (neste caso, “*.txt” para arquivos de texto). Em seguida, percorremos cada arquivo usando o loop foreach e usamos o cmdlet Copy-Item para copiá-lo para a pasta de destino.

Comparando VBA e PowerShell

Agora vamos comparar o VBA e o PowerShell em termos de seus pontos fortes e áreas de foco:

  1. Integração com Aplicativos: O VBA se destaca na automação de tarefas dentro de aplicativos do Microsoft Office. Ele oferece acesso direto ao modelo de objetos do aplicativo hospedeiro, permitindo um controle e manipulação detalhados. O PowerShell, por outro lado, concentra-se mais na automação e administração de sistemas, com uma ampla variedade de cmdlets para gerenciar sistemas operacionais, serviços e recursos.
  2. Sintaxe e Estrutura: O VBA utiliza uma abordagem procedural, com sub-rotinas e funções, sendo adequado para tarefas específicas de aplicativos. O PowerShell adota uma abordagem baseada em comandos, usando cmdlets e funções para executar operações. Ele abraça uma mentalidade orientada a objetos, tratando tudo como um objeto com propriedades e métodos.
  3. Integração e Extensibilidade: O VBA integra-se perfeitamente a aplicativos do Microsoft Office e seus modelos de objetos. Ele oferece acesso fácil a funcionalidades específicas do aplicativo. O PowerShell, por outro lado, oferece integração extensiva com o .NET Framework e bibliotecas de terceiros. Ele suporta a importação de módulos e o aproveitamento de bibliotecas existentes para estender a funcionalidade.
  4. Administração de Sistemas: O PowerShell se destaca em tarefas de administração de sistemas. Ele fornece cmdlets poderosos para gerenciar sistemas operacionais, Active Directory, SQL Server, Exchange Server e muito mais. As capacidades de script do PowerShell e o acesso ao .NET Framework tornam-no uma escolha ideal para automatizar operações complexas de sistema e realizar tarefas administrativas.

Quando se trata de copiar arquivos com base em critérios de pesquisa, o PowerShell tem uma vantagem clara. O cmdlet Get-ChildItem fornece recursos robustos de filtragem de arquivos, permitindo pesquisar arquivos com base em vários critérios, como extensão de arquivo, nome, tamanho e outros. A sintaxe concisa do PowerShell e seu conjunto abrangente de cmdlets o tornam uma ferramenta poderosa para gerenciar e manipular arquivos de forma eficiente.

Em conclusão, tanto o VBA quanto o PowerShell são ferramentas valiosas para automação, mas possuem áreas de foco diferentes. O VBA é ideal para automatizar tarefas dentro de aplicativos do Microsoft Office, enquanto o PowerShell se destaca em administração de sistemas, automação em linha de comando e gerenciamento de arquivos. Escolha a linguagem que melhor atenda às suas necessidades de automação e aproveite seus pontos fortes para otimizar seus fluxos de trabalho e aumentar a produtividade.

Selenium – O que é Selenium Basic/VBA

Selenium é uma biblioteca poderosa e versátil de código aberto que oferece um conjunto abrangente de ferramentas para automação de navegadores web. Embora seja comumente usado para testes web, ele também ganhou grande popularidade no campo de web scraping. Aqui estão algumas razões pelas quais o Selenium é considerado uma excelente opção para web scraping:

  1. Manipulação de Conteúdo Dinâmico: Muitos sites modernos dependem fortemente de conteúdo dinâmico que é carregado ou gerado por meio de JavaScript. Técnicas tradicionais de scraping, como análise de HTML com bibliotecas como BeautifulSoup, podem não ser capazes de lidar com esse conteúdo dinâmico. O Selenium, por outro lado, é excelente em lidar com conteúdo dinâmico. Ele pode interagir com a página da web em tempo real, executar código JavaScript e recuperar o conteúdo totalmente renderizado, permitindo que você extraia dados de sites que dependem fortemente de JavaScript.
  2. Automação de Navegadores: O Selenium permite que você automatize navegadores web, replicando interações semelhantes às de um ser humano com as páginas da web. Isso significa que você pode navegar por várias páginas, clicar em botões, preencher formulários, enviar dados e realizar várias outras ações programaticamente. Ao simular interações humanas, o Selenium permite que você acesse dados que podem estar ocultos por trás de telas de login, interaja com funcionalidades baseadas em AJAX ou percorra conteúdo paginado. Esse nível de automação torna o Selenium uma ferramenta poderosa para fazer scraping de sites complexos.
  3. Suporte a Vários Navegadores: O Selenium oferece suporte a vários navegadores da web, como Chrome, Firefox, Safari e Internet Explorer, entre outros. Esse suporte a vários navegadores permite que você escolha o navegador que melhor se adapte às suas necessidades de scraping ou replique o comportamento do seu público-alvo. Você pode escrever seu código de scraping uma vez e alternar facilmente entre diferentes navegadores, garantindo compatibilidade e flexibilidade.
  4. Seleção Robusta de Elementos: O Selenium fornece uma ampla variedade de métodos para localizar elementos em uma página da web, incluindo por ID, classe, XPath, seletores CSS e outros. Essa flexibilidade permite que você direcione com precisão os elementos que deseja extrair. Além disso, o Selenium oferece métodos avançados de interação com elementos, permitindo que você extraia texto, valores de atributos, execute cliques e manipule várias interações do usuário com facilidade.
  5. Ecossistema e Suporte da Comunidade: O Selenium possui uma comunidade extensa e ativa de desenvolvedores, o que significa que você pode encontrar muitos recursos, tutoriais e discussões para ajudá-lo em seus projetos de web scraping. O extenso ecossistema em torno do Selenium inclui frameworks, wrappers e ferramentas de terceiros que fornecem recursos adicionais e tornam o web scraping mais eficiente.

Embora o Selenium seja uma ferramenta poderosa para web scraping, vale ressaltar que ele pode ser exagerado para tarefas de scraping simples. Se o site que você está visando não depende fortemente de conteúdo dinâmico ou JavaScript, ou se você só precisa extrair dados HTML estáticos, pode ser mais apropriado usar uma biblioteca leve como BeautifulSoup ou Requests. No entanto, quando enfrentar cenários complexos de scraping ou sites dinâmicos, as capacidades do Selenium se destacam, tornando-o uma escolha principal para muitos projetos de web scraping.

Aqui, um exemplo simples de código VBA  usando Selenium Basic.

Sub AutomatizarTarefaWeb()
    Dim driver As New SeleniumWrapper.WebDriver
    Dim elemento As SeleniumWrapper.WebElement
    
    ' Abrir o navegador e navegar para um site
    driver.Start "chrome", "https://www.example.com"
    driver.Get "/"
    
    ' Localizar um campo de entrada pelo seu ID e inserir texto
    Set elemento = driver.FindElementById("campoDeEntrada")
    elemento.SendKeys "Olá, Selenium!"
    
    ' Localizar um botão pelo XPath e clicar nele
    Set elemento = driver.FindElementByXPath("//button[@id='botaoEnviar']")
    elemento.Click
    
    ' Aguardar o carregamento da página
    driver.Wait 5000
    
    ' Extrair o texto de um elemento específico
    Set elemento = driver.FindElementByClassName("textoResultado")
    MsgBox "Resultado: " & elemento.Text
    
    ' Fechar o navegador
    driver.Quit
End Sub

Certifique-se de ter a biblioteca Selenium Basic instalada e referenciada em seu projeto VBA antes de executar este código. Você pode encontrar a biblioteca Selenium Basic e instruções de instalação em sua página oficial no GitHub: https://github.com/florentbr/SeleniumBasic

Tornando-se um mestre no uso do Excel em 10 dicas

Achei isso num post do site Quora e é tão bom que fiz uma livre tradução (original em inglês, link no fim do artigo).

  1. Menos mouse, mais teclado. Use e abuse dos atalhos de teclado.
  2. Sempre, sempre congele painéis ao trabalhar com tabelas. É incontável o tempo perdido tentando se achar no mar de células sem a referência dos cabeçalhos.
  3. Não mescle células. Se precisar centralizar o conteúdo delas, aqui vai como fazê-lo: https://youtu.be/Ju8Esra5–I
  4. Evite começar uma planilha na célula A1. Sempre deixe algumas células acima como possível vantagem para adicionar fórmulas visíveis ou criar cabeçalhos mais tarde sem precisar reformatar tudo.
  5. Sempre formate seu trabalho, não por capricho, mas como indicação visual do que é importante naquilo que você está criando. É melhor fazer isso antes do que voltar mais tarde e ter que lembrar do que aquilo se tratava.
  6. Aprenda Tabelas Dinâmicas. Sua vida com filtros e somas vai mudar depois disso. Vá por mim.
  7. Não use valores fixos em fórmulas. Sempre coloque o valor em outra célula para facilitar a mudança mais tarde:
  8. Aprenda as principais fórmulas do Excel, principalmente: SE, SOMASE(S), CONT.SE(S), PROCV(X), CORRESP, INDICE, TEXTO. Elas tornarão o seu trabalho muito mais fácil.
  9. Sempre salve seu progresso, sempre. Há um atalho de teclado para isso (Ctrl+B sem portugues, Ctrl+S em inglês). Tenha-o na ponta dos dedos. Fez uma mudança drástica? Salve outra versão do arquivo (v1, v2, v20). Não tenha medo do espaço em disco. Ele está lá para servir você.
  10. E lembre-se: se você se encontrar fazendo algo repetitivo no Excel por mais de alguns minutos, há uma grande chance de existir uma maneira de automatizar isso (alô, macros?)

Espero que ajude!

Post original: https://www.quora.com/How-can-I-use-Excel-more-efficiently/answer/Onur-Yılmaz-18?ch=10&oid=42691588&share=1226efad&srid=HMwzR&target_type=answer