Sumário
Introdução
XXIII
Obtendo resultados com VBA
O que contém este livra
Ultrapassando a curva de aprendizado
O poder do VBA do Excel
O material técnico necessário para produzir aplicações para terceiros
Este livro ensinará como usar o Excel?
Uma breve história das planilhas e macros
O futuro do VBA e do Excel
Elementos especiais e convenções tipográficas
Versões abordadas
Arquivos de código
Próximas etapas
XXIII
XXV
XXV
XXV
XXV
XXVI
XXVI
XXVII
XXVIII
XXIX
XXIX
XXIX
l AS PRIMEIRAS ETAPAS DA C U R V A DE APRENDIZADO DO VBA
l
Liberando a força do Excel com o VBA!
A força do Excel
Barreiras para entrar
O gravador de macros não funciona!
O Visual Basic não é parecido com o BASIC
A boa notícia - É fácil ultrapassar a curva de aprendizado
A excelente notícia - O Excel com VBA recompensa o esforço
Conhecendo suas ferramentas-A barra de ferramentas do Visual Basic
Segurança de macro
Segurança muito alta
Segurança alta
Segurança média
Segurança baixa
Visão geral da gravação, do armazenamento e da execução de uma macro
Preenchendo a caixa de diálogo Gravar macro
Executando uma macro
Criando um botão de macro
Atribuindo uma macro a um controle de formulário
Entendendo o editor do Visual Basic (VBE)
Configurações do VBE
O Project Explorer
A janela Propriedades
3
3
3
3
4
4
4
5
6
7
7
7
7
7
8
8
8
9
10
10
11
12
Sumário
2
3
Examinando o código na janela de programação
Executar a macro em outro dia produz resultados indesejados
Uma solução possível: usar referências relativas quando gravar
Frustração
Próximas etapas: Aprender o VBA é a solução
Não consigo entender este código
14
16
16
20
20
21
Isso parece o BASIC, então, por que não me é familiar?
21
Entendendo as partes do "discurso" do VBA
O VBA é realmente difícil? Não!
Arquivos da Ajuda do VBA - Usando F1 para descobrir qualquer coisa
Usando os tópicos da Ajuda
Examinando o código da macro gravada -Usando o Editor e a Ajuda do VB
Parâmetros opcionais
Constantes definidas
Propriedades podem retornar objetos
Usando as ferramentas de depuração para descobrir o código gravado
Depurando o código
Mais opções de depuração - Pontos de interrupção
Movendo para a frente e para trás
Não parar em cada linha de código
Consultar algo enquanto executa o código por etapas
Usando uma inspeção para definir um ponto de interrupção
A referência básica a todos os objetos, métodos, propriedades
Cinco dicas fáceis para limpar o código gravado
Dica 1: Não selecione nada
Dica 2: Percorra o intervalo de baixo para cima para encontrar a última linha
Dica 3: Use variáveis para evitar codificar linhas e fórmulas
Dica 4: Aprenda a copiar e colar em uma única instrução
Dica 5: Use With... End With se você estiver executando múltiplas ações
para a mesma célula ou intervalo de células
Juntando tudo-corrigindo o código gravado
Próximas etapas
22
26
26
27
28
29
29
33
33
34
36
37
37
37
41
42
44
45
46
47
47
47
48
51
o objeto Range
53
Fazendo referência a intervalos
53
Usando os cantos superior esquerdo e inferior direito de uma seleção para
especificar um intervalo
Atalho para referenciar intervalos
Intervalos nomeados
Fazendo referência a intervalos em outras planilhas
Fazendo uma referência relativa a outro intervalo
Usando a propriedade Cells para selecionar um intervalo
Usando a propriedade Cells na propriedade Range
54
54
55
55
56
56
57
Sumário
XI
Usando a propriedade Offset para referenciar um intervalo
58
Usando a propriedade Résize para alterar o tamanho de um intervalo
58
Usando as propriedades Columns e Rows para especificar um intervalo
60
Usando o método Union para juntar vários intervalos
61
Usando o método Intersect para criar um novo intervalo a partir de intervalos
sobrepostos
61
Usando a função IsEmpty para verificar se uma célula está vazia
62
Usando a propriedade CurrentRegion para selecionar rapidamente um intervalo de dados.. 62
Usando a coleção Áreas para retornar um intervalo não-contíguo
66
Próximas etapas
67
Criando funções definidas pelo usuário
69
Funções definidas pelo usuário
Funções úteis e personalizadas do Excel
69
71
Definir o nome da pasta de trabalho atual em uma célula
71
Definir o nome da pasta de trabalho atual e o caminho do arquivo em uma célula
Verificar se uma pasta de trabalho está aberta
Verificar se existe uma planilha em uma pasta de trabalho aberta
Contar o número de pastas de trabalho em um diretório
Recuperar Userld
Recuperar a data e a hora da última gravação
Recuperar a data e a hora permanentes
Validar um endereço de e-mail
Somar células com base na cor interior
Recuperar o nome ou índice da cor interior da célula
Recuperar o índice de cor do texto
71
72
72
73
74
75
76
76
78
79
83
Contar valores únicos
83
Remover as duplicatas de um intervalo
Localizar a primeira célula com o comprimento
diferente de zero em um intervalo
Substituir vários caracteres
Recuperar números de um texto misto
Converter o número da semana em data
Separar string delimitada
84
86
87
89
89
90
Classificar e concatenar
91
Classificar caracteres alfanuméricos
Pesquisar uma string com texto
Reverter o conteúdo de uma célula
Máximo múltiplo
Retornar endereço de hiperlink
Retornar a letra da coluna de um endereço de célula
92
94
95
96
97
97
Aleatório estático
97
Usando Select Case em uma planilha
Próximas etapas
98
99
XII
5
Sumário
Loops e controle de fluxo
101
Loops For...Next
Usando variáveis na instrução For
101
104
Variações sobre o loop For.. .Next
104
Saindo de um loop logo após uma condição ser atendida
Aninhando um loop dentro de outro loop
105
106
Loops Do
Usando a cláusula W h i l e ou Until nos loops Do
Loops W h i l e . . . Wend
O loop do VBA: For Each
112
Variáveis de objeto
112
Controle de fluxo: Usando If.. .Then.. .Else e Select Case
Controle de fluxo básico: I f... Then... El se
Condições
If...Then...End If
Decisões Ou/Ou: If.. .Then... El se... End If
Usando I f. ..El se I f... End I f para múltiplas condições
Usando Select Case... End Select para múltiplas condições
Expressões complexas nas instruções Case
Aninhando as instruções If
Próximas etapas
6
107
110
112
115
115
116
116
116
117
117
118
118
121
Fórmulas estilo L1C1
123
Fazendo referência a células: Referências Al versus L1C1
Por que se preocupar
com o estilo L1C1?
Não apenas uma preocupação
Mudando o Excel para exibir as referências no estilo L1C1
O milagre das fórmulas do Excel
Entrar uma fórmula uma vez e copiá-la mil vezes
O segredo - Não é surpreendente
Explicação de estilo de referência L1C1
Usando L1C1 com referências relativas
Usando L1C1 com referências absolutas
Usando L1C1 com referências mistas
Fazendo referência a colunas e linhas inteiras com o estilo L1C1
Substituindo muitas fórmulas Al por uma única fórmula L1C1
Lembrando que os números da coluna
são associados às letras da coluna
Formatação condicional - L1C1 requerida
Configurando uma formatação condicional na interface do usuário
Configurando formatos condicionais no VBA
As fórmulas de matriz exigem formatação condicional
Próximas etapas
123
123
124
124
125
125
126
127
127
128
128
129
129
131
132
132
132
135
.. 135
Sumário
XIII
Nomes
137
Nomes globais versus nomes locais
Adicionando nomes
Excluindo nomes
Tipos de nomes
Fórmulas
Strings
Números
Usando matrizes em nomes
Nomes reservados
Ocultando nomes
Verificando a existência de um nome
Próximas etapas
Níveis de eventos
137
139
140
140
140
141
142
143
143
144
145
147
149
Programação de eventos
149
Usando eventos
Parâmetros do evento
Ativando eventos
Eventos da pasta de trabalho
Eventos de planilha
Eventos de planilha de gráfico
Gráficos embutidos
Eventos no nível da aplicação
Próximas etapas
Métodos de interação com o usuário
150
150
150
151
157
161
161
165
169
171
UserForms - Uma introdução
171
Criando um Userform
Chamando e ocultando um Userform
Programando o UserForm
Usando controles de formulário básico
Decidindo usar caixas de listagem (listBoxes) ou caixas
de combinação (ComboBoxes) nos seus formulários
Adicionando botões de opção a um UserForm
Usando o controle multipáginas para combinar os formulários
Próximas etapas
172
173
174
175
176
178
181
182
XIV
Sumário
II AUTOMATIZANDO A FORÇA DO EXCEL NO VBA
10
Gráficos
185
Visão geral
Gráficos embutidos versus folhas de gráfico
Os gráficos em uma planilha de gráfico não têm contêiner
Criando um gráfico com o VBA
O tipo de gráfico padrão
Usando variáveis de objeto para simplificar o código
A anatomia de um gráfico
A área do gráfico-Nome VBA: ChartArea
A área de plotagem - Nome VBA: PlotArea
As seqüências de dados-Nome VBA: Series
Tabela de tipos de gráfico
Detalhes de vários tipos de gráficos
Configurações para gráficos 3D
Gráficos interativos
Usando eventos com gráficos
Exportando gráficos como imagens
Desenhando com gráficos X-Y
Gráficos personalizados com o VBA
Próximas etapas
O Filtro avançado é mais fácil no VBA do que no Excel
185
186
188
188
191
192
193
193
197
198
205
208
208
211
212
213
213
214
216
217
11 Pesquisando dados com o Filtro avançado
Usando o Filtro avançado para extrair uma lista de valores exclusivos
Extraindo uma lista de valores exclusivos com a interface com o usuário
Extraindo uma lista de valores exclusivos com o código VBA
Obtendo combinações únicas de dois ou mais campos
Usando o Filtro avançado com intervalos de critérios
Unindo múltiplos critérios com um OU lógico
Unindo dois critérios com um E lógico
Outros intervalos de critérios ligeiramente complexos
Os critérios mais complexos - Substituindo a lista de valores por uma condição
criada como o resultado de uma fórmula
Estando preparado para nenhum registro após o filtro
Usando "Filtrar a lista no local" no Filtro avançado
Nenhum registro correspondente ao usar Filtrar a lista no local
Mostrando todos os registros após Filtrar a lista no local
Usando Filtrar a lista no local com Somente registros exclusivos
O verdadeiro "burro de carga": xl Fi l terCopy com todos os registros em vez
de somente registros exclusivos
Copiando todas as colunas
Copiando um subconjunto de colunas e reordenando
AutoFiltros
Próximas etapas
217
218
218
220
225
226
227
228
228
229
235
236
237
237
237
237
238
239
245
246
Sumário
12 Tabelas dinâmicas
247
Versões
247
Criando uma tabela dinâmica genérica na interface do Excel
Construindo uma tabela dinâmica no VBA do Excel
Obtendo uma soma em vez de uma contagem
Não é possível mover ou alterar parte de um relatório dinâmico
Calculando o tamanho de uma tabela dinâmica concluída
Receita por cliente para um gerente de linha de produto
Eliminando células em branco na área de dados
Usando a AutoClassificação para controlar a ordem de classificação
Controlando a ordem de classificação manualmente
Alterando o formato numérico padrão
Suprimindo os subtotais para vários campos de linha
Suprimindo os totais gerais das linhas
Manipulando as dificuldades adicionais
Criando uma nova pasta de trabalho para armazenar o relatório
Movendo o resumo para uma planilha de relatório em branco
Preenchendo a visão de estrutura
Formatação final
Adicionando subtotais
Juntando tudo
Questões de lucratividade do produto com dois ou mais campos de dados
Definindo campos de dados calculados
Evitar itens calculados
Resumindo os campos de dados com agrupamentos
Agrupamento por semana
Medindo o tempo de espera do pedido pelo agrupamento de dois campos de data
Técnicas avançadas de tabela dinâmica
Usando o recurso AutoApresentação dos 10 primeiros para produzir visões executivas
Usando ShowDetai l da tabela dinâmica para filtrar um conjunto de dados
Usando um campo de página para criar relatórios para cada região ou produto
Filtrando manualmente para dois ou mais itens em um PivotField
Soma, Média, Contagem, Valor mínimo, Valor máximo e muito mais
Relatórios de percentagens
Próximas etapas
Usando o VBA para estender o Excel
Formatação condicional com mais de três condições
248
250
252
253
253
256
258
259
259
260
261
262
262
262
263
264
266
266
267
271
273
276
278
281
283
285
285
289
291
296
300
302
306
307
307
13 A força do Excel
O AutoFiltro com mais de duas condições
Operações de arquivos
Listar arquivos em um diretório
Excluir uma pasta de trabalho após uma data específica
Fechar e excluir..
307
308
309
310
311
.. 312
XVI
Sumário
Importar CSV
Ler todo o CSV para a memória e analisar
Combinando e separando as pastas de trabalho
Separar planilhas em pastas de trabalho
Combinar pastas de trabalho
Filtrar e copiar dados em planilhas separadas
Exportar os dados para o Word
Trabalhando com comentários de célula
Listar os comentários
Redimensionar os comentários
Redimensionar os comentários com centralização
Colocar um gráfico em um comentário
Utilitários para empolgar seus clientes
Usando formatação condicional para realçar a célula selecionada
Realçar a célula selecionada sem usar formatação condicional
Personalizar a transposição de dados
Selecionar/desfazer a seleção de células não-contíguas
Técnicas para profissionais em VBA
Configuração rápida de página
Calculando o tempo para executar o código
Desativar os itens recortar, copiar e colar
Personalizar a ordem de classificação
Indicador do progresso da célula
Caixa Senha protegida
Alterartipos de caixas minúsculas/maiúsculas
Evento Delete personalizado
Selecionando com SpecialCells
Excluir linhas com condições
Ocultar a barra de fórmula
Aplicações arrojadas
Cotações de fundos e ações históricas
Usando a extensibilidade do VBA para adicionar código às novas planilhas
Próximas etapas
Obtendo dados da Web
14 Lendo e escrevendo na Web
Criando manualmente uma consulta Web e atualizando com VBA
Usando o VBA para atualizar uma consulta Web existente
Construindo uma nova consulta Web com VBA
Usando fluxo de dados
Usando Application.OnTime para analisar os dados periodicamente
Procedimentos programados exigem o modo Pronto
Especificando uma janela de tempo para uma atualização
Cancelando uma macro agendada anteriormente
O encerramento do Excel cancelará todas as macros programadas pendentes
314
315
316
316
317
318
320
321
321
322
323
324
326
326
327
328
330
332
332
334
336
338
339
340
342
344
345
345
347
347
347
349
350
351
351
352
353
354
357
357
358
358
359
359
Sumário
Programando uma macro para executar em x minutos no futuro
Programando uma macro para executar a cada dois minutos
Publicando dados em uma página Web
Usando VBA para criar páginas Web personalizadas
Usando o Excel como um sistema de gerenciamento de conteúdo
Bônus - FTP a partir do Excel
Próximas etapas
15 XML no Excel 2003 Profissional
359
360
362
364
365
368
369
371
O que é XML?
Regras simples do XML
Formato de arquivo universal
XML como o novo formato de arquivo universal
A sopa de letras do XML
Usando o XML para realizar round-trip de uma pasta de trabalho do Excel
para o HTML e retornar
Próximas etapas
16
XVII
Automatizando o Word .
371
372
372
373
374
375
380
. . 381
Vinculação anterior
Erro de compilação: Impossível encontrar objeto ou biblioteca
Vinculação posterior
Criando e referenciando objetos
Palavra-chave New
Função CreateObject
Função GetObject
381
383
383
384
385
385
385
Objetos do Word
386
Objeto Document
Objeto Range
387
390
Indicadores
Próximas etapas
393
398
III MATERIAL TÉCNICO DE QUE VOCÊ PRECISARÁ PARA P R O D U Z I R
APLICAÇÕES PARA O ADMINISTRADOR EXECUTAR
17
Matrizes
,
Declarar uma matriz
Matrizes multidimensionais
Preencher uma matriz
Esvaziar uma matriz
As matrizes podem facilitar a manipulação de dados, mas isso é tudo?
Matrizes dinâmicas
Passando uma matriz
Próximas etapas
401
401
402
402
404
405
406
408
408
XVIII
18
19
Sumário
Processamento de arquivo de texto
409
Importando arquivos de texto
Importando arquivos de texto com menos de 65.536 linhas
Lendo arquivos de texto com mais de 65.536 linhas
Escrevendo arquivos de texto
Próximas etapas
409
409
415
420
421
Usando o Access como um back end para melhorar
o acesso multiusuário aos dados
423
ADO versus DAO
As ferramentas do ADO
Adicionando um registro ao banco de dados
Recuperando registros do banco de dados
Atualizando um registro existente
Excluindo registros via ADO
Resumindo os registros via ADO
Outros utilitários via ADO
Verificando a existência de tabelas
Verificando a existência de um campo
Adicionando uma tabela
Adicionando um campo
Próximas etapas
424
426
426
428
430
432
433
434
434
435
436
437
437
20 Criando classes, registros e coleções
21
439
Inserindo um módulo de classe
Capturando eventos de aplicação e de gráfico embutido
Eventos de aplicação
Eventos de gráfico embutido
Criando um objeto personalizado
Usando um objeto personalizado
Usando Property LeteProperty Get para controlar o modo como
os usuários utilizam os objetos personalizados
439
440
440
442
443
445
Coleções
448
Criando uma coleção em um módulo padrão
Criando uma coleção em um módulo de classe
Tipos definidos pelo usuário (UDTs, user defined types)
Próximas etapas
448
449
454
457
Técnicas avançadas de UserForm
459
Usando a barra de ferramentas UserForm no projeto dos controles nos UserForms
Controles e coleções
Mais controles do UserForm
Botões de ativação
459
460
462
462
446
Sumário
22
XIX
Faixa de tabulação
RefEdit
Userforms sem modo
Hyperlinks nos userforms
Adicionando controles em tempo de execução
Redimensionando o userform dinamicamente
Adicionando um controle dinamicamente
Dimensionando dinamicamente
Sem a funcionalidade AutoCompletar
Adicionando outros controles
Adicionando uma imagem dinamicamente
Juntando tudo
Usando uma barra de rolagem como uma barra deslizante para selecionar valores
Adicionando dicas de ajuda aos controles
Teclas aceleradoras
Texto de dica do controle
462
464
464
465
466
468
468
468
468
469
469
470
472
474
474
474
Ordem de tabulação
Colorindo o Active Control
Formulários transparentes
Próximas etapas
474
475
478
479
Application Programming Interface (API) do Windows
481
O que é a API do Windows?
Entendendo uma declaração de API
Usando uma declaração de API
Exemplos de API
Recuperar informações de resolução de exibição
Desativar o X do Excel para fechar a aplicação
Desativar o X para fechar um userform
Cronômetro de execução
Links clicáveis nos formulários
Executando sons
Recuperando um caminho de arquivo
Encontrando mais declarações de API
Próximas etapas
481
481
482
483
485
486
488
488
489
490
491
495
495
23 Tratamento de erros
O que acontece quando ocorre um erro
O erro de depuração dentro do código do userform pode ser um engano
Tratamento de erro básico com a sintaxe On Error Go To
Múltiplos manipuladores de erro
Manipuladores de erro genéricos
Tratando os erros e decidindo ignorá-los
Suprimindo os avisos do Excel..
497
497
498
500
502
502
502
.. 504
XX
24
25
Sumário
Treinando seus clientes
Erros durante o desenvolvimento versus erros posteriores
Erro.de tempo de execução 9: Subscrito fora do intervalo
Erro de tempo de execução 1004: Método 'Range' do objeto ' G l o b a l ' falhou
As doenças da proteção de código
Mais problemas com senhas
Erros causados por versões diferentes
Próximas etapas
505
505
505
506
507
508
509
509
Usando menus personalizados para executar macros
511
Criando um menu personalizado
Excluindo e criando um menu personalizado
Adicionando um único item de menu
Dividindo os itens em grupos
Adicionando um menu fly-out
Criando uma barra de ferramentas personalizada
Excluindo e criando a barra de ferramentas
Adicionando os botões à barra de ferramentas
Usando os códigos FacelD para adicionar ícones à barra de ferramentas
Adicionando controles suspensos à barra de ferramentas
Lembrando a posição de uma barra de ferramentas
Outras maneiras de executar uma macro
Atalho do teclado
Anexar um menu a um botão de comando
Anexar uma macro a um controle ActiveX
Próximas etapas
511
512
513
514
515
517
518
519
520
520
521
522
522
523
525
527
Suplementos
529
Características dos suplementos padrão
Convertendo uma pasta de trabalho do Excel em suplemento
Usando Salvar como para converter um arquivo em um suplemento
Usando o Editor do Visual Basic para converter um arquivo em um suplemento
Fazendo o cliente instalar o suplemento
Suplementos padrão não são seguros
Fechando os suplementos
Removendo suplementos
Usando uma pasta de trabalho oculta como uma alternativa para um suplemento
Próximas etapas
529
530
531
531
532
532
533
534
534
536
26 Estudo de caso: Projetando uma aplicação no Excel
Sobre Tushar Mehta
Usando o Excel para fazer algo mais do que calcular
A solução
537
537
538
538
Sumário
Implementando a solução no Excel e no VBA
Passo l - Conceitos de cima para baixo
Passo l - Componentes principais definidos
Passo 2 - Código de cima para baixo
Passo 2 - Componentes-chave
Passo'3-Código de cima para baixo completo
Passo 3 - Componentes-chave completos
Resumo
Próximas etapas
índice
XXI
539
540
541
542
544
545
548
548
549
. 550
Download

Sumário