VBA – Carregando uma Imagem no UserForm

Está aí uma dúvida mais comum do que esperava. Carregar uma imagem num UserForm (ou planilha se preferir)? Siga os passos abaixo:

Abra o VBA (Alt+F11 com o Excel aberto)

Insira um UserForm:

Insira um UserForm
Insira um UserForm

Insira um controle de imagem no UserForm:

Insira um controle de imagem no UserForm
Insira um controle de imagem no UserForm

Arraste um botão de comando logo abaixo da Imagem:

Arraste um botão de comando logo abaixo da Imagem
Arraste um botão de comando logo abaixo da Imagem

Selecione o botão e na caixa de propriedades (clique em F4 se ela não estiver aparecendo), mude o texto do botão (Caption):

Selecione o botão e na caixa de propriedades mude o texto do botão
Selecione o botão e na caixa de propriedades mude o texto do botão

Clique duas vezes no botão para gerar o evento de Click:

Clique duas vezes no botão para gerar o evento de Click
Clique duas vezes no botão para gerar o evento de Click

E finalmente, o código:

Private Sub CommandButton1_Click()
    caminhoArquivo = Application.GetOpenFilename(FileFilter:="Image Files(*.jpg), *.jpg")
    Me.Image1.Picture = LoadPicture(caminhoArquivo)
End Sub

Execute o UserForm clicando em F5 e ao clicar no botão “Buscar Imagem”, você será apresentado a uma tela de escolha de arquivo como essa (já filtrando por arquivos de imagem. Reparei no filtro feito no código na linha 2):

Selecionando sua imagem
Selecionando sua imagem

Após selecionar a imagem, o resultado será parecido com este:

O resultado
O resultado

O mais atentos saberão que o código contém um bug. Se quiser saber a resposta, veja este link.

Arquivo: Carregar_Imagem_UserForm

Em vídeo!

Bom proveito!

VBA – Ocultando o navegador no Selenium

Eis um recurso amplamente solicitado pela comunidade que as empresas detentoras dos navegadores (com excessão do IE e Edge) acabaram por disponibilizar, que é a habilidade de ocultar o navegador durante a execução do seu script executando Selenium. E a linha de código para tal é simples:

driver.AddArgument ("--headless")

A linha acima funcionará perfeitamente no Chrome e Firefox. Abaixo o código mais completo:

Dim driver As WebDriver
    Sub Teste()
    Set driver = New ChromeDriver

    driver.AddArgument ("--headless")

    driver.Get "https://www.dolarhoje.com"

    Dim valor As String
    valor = driver.FindElementById("nacional").Value

    driver.Quit
    MsgBox valor
End Sub

E como não poderia faltar:

Gerador de Cadastros de Excel com Access 2018

Enfim, ele chegou. Era tudo o que eu queria e provavelmente, nada do que você espera.

Calma que eu explico.

Se você já conhece este blog, existe uma grande chance te ter chegado aqui por causa deste carinha:

Modelos Prontos

O Modelo de Cadastro em Excel teve sua primeira versão lançada em 2008. Sim, 10 anos! A intenção sempre foi dizer ao mercado que era possível fazer certas coisas no Excel VBA que muitos programadores não VBA desacreditavam. Bem, parece que deu certo. Da quantidade de perguntas que recebo no email ao fórum dedicado e alguns clones com referências esquecidas, esse modelo ganhou versões, sendo algumas minhas e outras criadas pela comunidade e outras variações, desde versões do mesmo com banco de dados no access até uma primorosa feita pelo colega Mikel Silveira Braga que produz o mesmo feito sem o uso de ADO.

Se você fez uso dele para alguns de seus projetos, bem, aqui vai meu muito obrigado pelo reconhecimento.

E é em continuação a esse reconhecimente que este modelo precisava de uma atualização. É sabido que o VBA não recebe atualização faz anos. Porque então uma nova versão? Se a tecnologia não muda, o que precisa mudar é a forma de pensar. Foi pensando nisso que decidi não otimizar, mas sim reconstruir o modelo do zero.

O Gerador de Cadastros 2018

Verdade das verdades, esse era para ser o Gerador de Cadastros 2017, mas enrolei tanto que acabou saindo só esse agora. Ele inclusive passou por uma revisão do já mencionado Mikel, que aprovou após algumas ressalvas. Valeu Mikel!

Quando decidi reconstruir o modelo, procurei manter em mente o que os usuários mais solicitavam dele. Por incrível que pareça, o pedido mais comum era também o mais básico. Personalizar o nome dos campos. Com isso em mente, mais algumas ideias malucas que surgiu o gerador de cadastros!

Ele não é uma ideia original. O código foi baseado no modelo que o gerador de formulários do Code VBA Builder. Quando vi a funcionalidade e seu potencial, decidir usa-lo como base para tal. Calma, você não precisa do Code VBA instalado para isso.

O uso é relativamente simples. Porém, e mais fácil demonstrar isso em vídeo.

Ainda vou escrever toda a implementação em detalhes num documento extenso que publicarei em breve, mas não quero mais atrasar a publicação deste modelo.

Todo o código, como baixar e usar está explicado no mesmo.

Gerador de Cadastros no GitHub: https://github.com/Tomamais/VbaFormBuilder

Bem, curta o vídeo e bom proveito!

Embelezando sua fórmula no Excel

A internet é um lugar lindo, principalmente para quem busca coisas lindas.

Viagens a parte, o que significa embelezar sua fórmula no Excel? Não, ela não ficará mais bonita. Ela nem vai mudar, mas, vai ficar muito mais fácil de você entendê-la. Vamos pegar esse post recente deste honorável blog como cobaia. A fórmula do artigo é esta:

=SE(A2="";"";CONCAT(EXT.TEXTO(A2;1 + NÚM.CARACT(A2)-LIN(INDIRETO("1:" & NÚM.CARACT(A2)));1)))

É até simples, mas, e se ela fosse apresentada de outra forma?

=SE(
    A2 = "";
    "";
    CONCAT(
        EXT.TEXTO(
            A2;
            1 +
            NÚM.CARACT(
                A2
            ) -
            LIN(
                INDIRETO(
                    "1:" &
                    NÚM.CARACT(
                        A2
                    )
                )
            );
            1
        )
    )
)

Não sei você, mas se você estiver procurando algum erro, ou querendo isolar um pedaço da fórmula, ou mesmo tentando entendê-la melhor, é muito mais simples se ela estiver formatada como acima. Quem faz esse mágica é o site Excel Formula Beautifier. Ele está disponível somente em inglês, mas deixa que você configure o separador de fórmulas para ser o “;” ou invés do “,” do Excel em inglês.

Veja como fica a fórmula deste artigo “embelezada”:

Tive que reduzir o zoom da página para caber
Tive que reduzir o zoom da página para caber

Muito além do Excel

Só de fazer o que faz e ser de graça, já vale a menção. Não bastasse tudo isso, ele converte fórmulas do Excel para expressões linguagens como o C#, Javascript ou Python. Veja o exemplo padrão do site convertido em C#:

Não é feitiçaria, é tecnologia!
Não é feitiçaria, é tecnologia!

Mais ainda, o código da página é aberta e está disponível no github!

Quer mais? A página do autor sobre o assunto lista uma série de projetos na mesma linha de avaliar fórmulas de modo a quebrá-la em partes para um melhor entendimento. Um que me chamou a atenção foi fórmula parser, escrito em C#, também disponível para download.  Veja como ele destrincha uma fórmula do Excel em partes:

Excel Formula Parsing, in C#
Excel Formula Parsing, in C#

Para terminar, lembro que neste vídeo que postei no canal lendo comentários, muitos me perguntaram como colaborar com a comunidade. Esse é um jeito.

Invente o seu!

Technology, Education and whatever else