Excel – Separando Nome e SobreNome

Um problema mais recorrente do que se deseja, e de solução até simples com as funções do Excel. Vamos imaginar a seguinte lista de nomes que você tenha recebido:

Excel Nome SobreNome

Ótimo. A missão então é separar o nome e o sobrenome das células na coluna A. Para isso, precisamos de algumas fórmulas. Para o nome, precisaremos da ESQUERDA e a PROCURAR.

A função ESQUERDA obtém o texto à esquerda de um determinado texto com base no número informado. São dois argumentos para esta função, o sendo o primeiro o texto e o segundo a quantidade de caracteres. Por exemplo, se usarmos a função da seguinte forma:

=ESQUERDA(“Excel”;2)

O resultado será “Ex”, pois pedimos os dois caracteres à esquerda do texto “Excel”, ou seja, as duas primeiras letras.

A segunda função, a PROCURAR, retorna o número que aponta para a ocorrência de um texto que procuramos. Ela recebe 3 argumentos, mas vamos nos preocupar apenas com 2. O primeiro é o texto que procuramos, o segundo é o texto onde procuramos. O seguinte exemplo:

=PROCURAR(“ce”;”Excel”)

Retorna 3, ou seja, pedimos a função que procure o texto “ce” dentro do texto “Excel” e me diga onde ele começa, se encontra-lo. No caso, como o texto começa na 3ª letra, o mesmo é o resultado.

Tendo essas duas funções em mãos, colocando a seguinte função na célula B2 da nossa planilha de exemplo:

=ESQUERDA(A2;PROCURAR(” “;A2))

Temos o seguinte resultado:

Excel Nome SobreNome

O que dissemos ao Excel nesta fórmula foi, procure no texto da célula A2 (fórmula PROCURAR) o caractere espaço em branco (” “). O resultado disso, é passado a função ESQUERDA, que usa esse número para pegar todo o texto a partir da esquerda até onde a função PROCURAR encontrou o 1º espaço em branco, ou seja, o primeiro nome.

Perfeito. Faça o autocompletar até a última célula para ver a fórmula funcionando para os outros nomes.

Agora, o SobreNome.

Neste caso, precisaremos da mesma coisa da primeira, porém, ao invés de usar a função ESQUERDA, usaremos a função DIREITA, que faz exatamente o mesmo, porém, procura o texto a partir da extremidade direita, ou seja, do fim do texto. Vamos pedir uma ajuda a função NÚM.CARACT, que conta o número de caracteres de um texto.  Neste caso, deixarei a função falar por si:

=DIREITA(A2;NÚM.CARACT(A2) – NÚM.CARACT(B2))

Estamos dizendo ao Excel, retorne para mim os caracteres a direita do texto, cuja quantidade é o número de caracteres do nome completo, menos o número de caracteres do primeiro nome, ou seja, o que sobra, o sobrenome:

Excel Nome SobreNome

É só autocompletar.

Bom proveito!

VBA – Macro para exportar dados em XML no Excel

A partir da versão 2002 (XP), o Excel, bem como todos os programas do Office ganharam uma séria de artimanhas para manipular, importar, exportar e trabalhar no padrão XML.

Isso é bom e poderoso, mas tentando fazer uma exportação simples de uma planilha em um arquivo XML, naveguei pelas opções que o Excel oferecia e no final, acabei optando por fazer a exportação por VBA, já que precisava de algo rápido do “limpo”.

Não usei classes ou bibliotecas específicas para o trabalho. A criação do XML foi na mão mesmo. Abaixo segue o código que faz o trabalho:

Sub ExportToXml()
    Dim linha As Long, coluna As Long, colunas As Long
    linha = 2
    colunas = ActiveSheet.UsedRange.Columns.Count
    Set fs = CreateObject("Scripting.FileSystemObject")
 
    Set a = fs.CreateTextFile(ThisWorkbook.FullName & ".xml", True)
    'cria as primeiras linhas
    a.WriteLine ("<?xml version=""1.0"" encoding=""UTF-8""?>")
    a.WriteLine ("<" & ActiveSheet.Name & "s>")
 
    With ActiveSheet
        Do While Not IsEmpty(.Cells(linha, 1))
            a.WriteLine (Chr(9) & "<" & ActiveSheet.Name & ">")
 
            For coluna = 1 To colunas Step 1
                a.Write (Chr(9) & Chr(9) & _
                "<" & .Cells(1, coluna).Value & ">" & _
                RTrim(.Cells(linha, coluna).Value) & _
                "</" & .Cells(1, coluna).Value & ">" & Chr(13))
            Next
 
            a.WriteLine (Chr(9) & "</" & ActiveSheet.Name & ">")
            linha = linha + 1
        Loop
    End With
 
    'finaliza o arquivo
    a.WriteLine ("</" & ActiveSheet.Name & "s>")
    a.Close
 
    MsgBox "Finito!"
End Sub

Em detalhes, a macro navega a partir da segunda linha (a primeira deve ter os cabeçalhos ok?) e constrói o XML, sendo que os nós considerarão o nome da planilha, pluralizando-a, por exemplo, se o nome da planilha for Usuario, ele criará o nó Usuarios e cada elemento/linha como Usuario. O arquivo gerado tem o mesmo nome da planilha, mas com a extensão XML. De quebra, o XML vai indentado.

Uma mão na roda para exportação de dados limpos. Faça o teste e, bom proveito.

VBA – Capturando Imagens da WebCam

Anexo uma planilha que captura a imagem de uma WebCam e a coloca em USF(Userorm), encontrei por acaso em um Forum na França, tive de me registrar para poder baixar o exemplo, apesar de dizer que foi testada na WebCam Logitech QuickCam Home 1.02, e que é necessário a DLL avicap32.dll(deve estar em Windows\System32) padrão do Windows, no teste com minha webcam da Fortrek funcionou perfeitamente.

Como meu francês não é la grande coisa usei o tradutor do Google, mas tem muita informação, então só fiquei no básico, para outras adaptações aconselhoo fazerem o mesmo.

Parte do que traduzi, diz que esse exemplo SOMENTE Captura a Imagem da Cam, mas NÃO é possivel ve-la em tempo Real, se encontrarem uma forma, postem, e que a mesma tem de estar LIGADA antes para poder funcionar corretamente.

A única adaptação que fiz, foi adicionar a rotina de enviar a Imagem para a planilha em um outro CommndButton.

Link Original Forum, é possivel ver, mas para baixar tem de se Registrar:
http://www.excel-downloads.com/forum/34 … ebcam.html

Neste, temos várias outras opções, usando um Scanner, formatação das Imagens, etc . . .
Usando o Windows Image Acquisition biblioteca em VBA (WIA)
http://silkyroad.developpez.com/VBA/Win … tion/#LIII

Pelo que entendi a Fonte dos códigos, foram tiradas do site abaixo que é utilizado em VB.
http://www.vbfrance.com/code.aspx?ID=30202

Por hora deixo aos colegas a tarefa de implementações e adaptações, apesar de não dizer nada no site, mas é sempre bom colocarmos os créditos da adaptação do método PastePicture do STEPHEN BULLEN.

abraços

Anexos
XLD_WebCamCapture_mvc.rar
Captura Imagem WebCam
(25.96 KiB)