Às vezes, é útil ler uma planilha linha por linha e obter dados dela seletivamente. Um exemplo abaixo mostra como fazer isso.
O artigo pressupõe que o leitor tenha a faixa Desenvolvedor exibida e esteja familiarizado com o Editor VBA. Se não, por favor, Google “Excel Developer Tab” ou “Excel Code Window”.
O exemplo a seguir manipula os dados examinando cada linha de endereços de e-mail e concatenando-os em uma única linha de endereço. Embora o Excel tenha funções de transposição incorporadas, pretendemos com nosso código excluir alguns endereços específicos e adicionar delimitadores.
Nosso aplicativo precisa de apenas uma folha. Copie as informações abaixo para a célula A1:
| tcruise@paramount.com |
| julia.R@disney.com |
| Jules.dassin@gaumont.co.fr |
| EnricoFellini@cinecitta.co.it |
| marymontrary@bedlam.org.uk |
Coloque um botão no formulário para iniciar o código.
Vamos supor que existam centenas desses e-mails em vez de apenas cinco; queremos enviar a mesma mensagem e a mesma cópia do nosso roteiro para cada um deles. Existem várias maneiras de fazer isso, principalmente chamando o programa de e-mail, como o Outlook, a partir de um código VBA. No entanto, este exercício tem dois objetivos:
- Mostre como percorrer facilmente uma planilha;
- Destaque a capacidade do Excel de examinar cada linha e agir de acordo com ela.
O Código VBA
O código VBA irá concatenar todos os endereços, inserindo um ponto e vírgula após cada um, para que possam ser colados de uma só vez no campo de destinatário do e-mail. Você notará no código que, após examinar as linhas, ele excluirá as francesas.
Insira um módulo e digite o seguinte:
Option Explicit
Dim strEmail As String
Dim strAll As String
Sub Main()
strAll = ""
Range("C2") = strAll 'clear previous program results
Sheets("Sheet1").Select
Range("A2").Select
Do While ActiveCell > "" 'loop until row 7
strEmail = ActiveCell
If Right(strEmail, 2) <> "fr" Then 'exclude France
strAll = strAll & strEmail & ";"
End If
Range("A" & ActiveCell.Row + 1).Select 'move on a row in the SAME column
Loop
Range("C2") = strAll
End Sub
O código mantém a célula ativa na coluna A, apenas as linhas se movem. Para fazer referência a informações em outro lugar em uma linha, usaríamos:
Variable = Activecell.offset(offset rows, offset columns)
Para obter um valor da coluna B na linha ativa, por exemplo, o código seria lido Célula ativa.offset(0, 1). Para obter o valor de A2 quando estamos em A3 leríamos Activecell.offset(-1, 0).
Para testar seu código, atribua o botão à macro “Principal”.
Alguns provedores de serviços de Internet, como precaução anti-spam, podem limitar o número de e-mails que você pode enviar de uma só vez. Se você usar esse método, provavelmente é melhor verificar com eles antes de enviar centenas de e-mails de uma só vez.
Lidando com a corrupção de arquivos do Excel

Introdução do autor:
Felix Hooker é um especialista em recuperação de dados em DataNumen, Inc., líder mundial em tecnologias de recuperação de dados, incluindo reparar rar corrupção e produtos de software de recuperação SQL. Para mais informações visite www.datanumen.com
