Do Básico ao Avançado
Home  Tutoriais  Artigos  Contato

Como preencher uma tabela através de um formulário

Neste tutorial mostrarei como preencher uma tabela através de um formulário criado no Word 2007 através do Editor do Visual Basic.

O objetivo principal deste tutorial é mostrar ao leitor como preencher uma tabela do Word através de um formulário VBA.

Mas a partir desta aprendizagem você poderá criar outras aplicações e adequá-los a quaisquer outros documentos, conforme suas necessidades.

Primeiramente vamos criar o documento que conterá a tabela que receberá os dados do Formulário, como o da imagem abaixo:

tabela do Word

Após criar o documento com a tabela, dê um nome salve-o como Modelo Habilitado para Macro do Word

Construindo a Interface (Formulário)

Abra o Editor do Visual Basic e insira um Formulário (UserForm1).

Inserir UserForm

Na Janlea de Propriedades, altere as seguintes propriedades:

Name: frmResultadoFinal

Caption: Resultado Final

Height: 246,75

Width: 303

Agora devemos adicionar alguns controles ao formulário. Para esse formulário necessitaremos dos seguintes controles:

Quant Controle
2 Frame(Quadro)
6 Label(Rótulo)
5 TextBox(Caixa de Texto)
1 ComboBox(Caixa de Combinação)
3 CommandButton(Botão de Comando)

Na Caixa de Ferramentas clique na ferramenta Quadro (Frame1) para adicionar o primeiro Quadro ao formulário e altere as seguintes propriedades:

Caption: Resultado Final por Série

Font: Tahoma, Tamanho 11

Height: 204

Left: 12

Top: 12

Width: 276

Na Caixa de Ferramentas clique na ferramenta Quadro (Frame2) para adicionar o segundo Quadro dentro do primeiro Quadro (Frame1) e altere as seguintes propriedades:

Caption:(Deixe esta propriedade em branco)

Height: 108

Left: 180

Top: 48

Width: 84

Ficará como na imagem abaixo:

UserForm

Continuando com o processo de criação do Formulário, novamente na Caixa de Ferramentas clique na ferramenta Rótulo (Label1) para adicionar o primeiro Rótulo dentro do primeiro Quadro (Frame1) e altere as seguintes propriedades:

Caption: Selecione a Série/Ano:

Font: Tahoma, Tamanho 11

Height: 18

Left: 12

Top: 18

Width: 102

Na Caixa de Ferramentas clique na ferramenta Rótulo (Label2) para adicionar o segundo Rótulo dentro do primeiro Quadro (Frame1) e altere as seguintes propriedades:

Caption: Alunos Matriculados

Font: Tahoma, Tamanho 11

Height: 20

Left: 12

Top: 48

Width: 100

Na Caixa de Ferramentas clique na ferramenta Rótulo (Label3) para adicionar o terceiro Rótulo dentro do primeiro Quadro (Frame1) e altere as seguintes propriedades:

Caption: Alunos Transferidos

Font: Tahoma, Tamanho 11

Height: 20

Left: 12

Top: 78

Width: 100

Na Caixa de Ferramentas clique na ferramenta Rótulo (Label4) para adicionar o quarto Rótulo dentro do primeiro Quadro (Frame1) e altere as seguintes propriedades:

Caption: Alunos Evadidos:

Font: Tahoma, Tamanho 11

Height: 20

Left: 12

Top: 107,95

Width: 100

Na Caixa de Ferramentas clique na ferramenta Rótulo (Label5) para adicionar o quinto Rótulo dentro do primeiro Quadro (Frame1) e altere as seguintes propriedades:

Caption: Alunos Retidos:

Font: Tahoma, Tamanho 11

Height: 20

Left: 12

Top: 138

Width: 100

Na Caixa de Ferramentas clique na ferramenta Rótulo (Label6) para adicionar o sexto Rótulo dentro do primeiro Quadro (Frame1) e altere as seguintes propriedades:

Caption: Alunos Promovidos

Font: Tahoma, Tamanho 11

Height: 20

Left:12

Top: 168

Width: 100

Ficará como a imagem abaixo:

UserForm

Na Caixa de Ferramentas clique na ferramenta Caixa de Combinação (ComboBox) para adicionar uma Caixa de Combinação dentro do primeiro Quadro (Frame1) e altere as seguintes propriedades:

Font: Tahoma, Tamanho 11

Height: 20

Left: 120

Top: 18

Width: 126

Ficará como na imagem abaixo:

UserForm

Na Caixa de Ferramentas clique na ferramenta Caixa de Texto (TextBox1) para adicionar a primeira Caixa de Texto no formulário e posicione-a dentro do primeiro Quadro (Frame1), em seguida altere as propriedades:

Font: Tahoma,Tamanho 11

Height: 20

Left: 120

TextAlign: 3-fmTextAlignCenter

Top: 48

Width: 54

Na Caixa de Ferramentas clique na ferramenta Caixa de Texto (TextBox2) para adicionar a segunda Caixa de Texto no formulário e posicione-a dentro do primeiro Quadro (Frame1), em seguida altere as propriedades:

Font: Tahoma, Tamanho 11

Height: 20

Left: 120

TextAlign: 3-fmTextAlignCenter

Top: 78

Width: 54

Na Caixa de Ferramentas clique na ferramenta Caixa de Texto (TextBox3) para adicionar a terceira Caixa de Texto no formulário e posicione-a dentro do primeiro Quadro (Frame1), em seguida altere as propriedades:

Font: Tahoma,Tamanho 11

Height: 20

Left: 120

TextAlign: 3-fmTextAlignCenter

Top: 108

Width: 54

Na Caixa de Ferramentas clique na ferramenta Caixa de Texto (TextBox4) para adicionar a quarta Caixa de Texto no formulário e posicione-a dentro do primeiro Quadro (Frame1), em seguida altere as propriedades:

Font: Tahoma,Tamanho 11

Height: 20

Left: 120

TextAlign: 3-fmTextAlignCenter

Top: 138

Width: 54

Na Caixa de Ferramentas clique na ferramenta Caixa de Texto (TextBox5) para adicionar a quinta Caixa de Texto no formulário e posicione-a dentro do primeiro Quadro (Frame1), em seguida altere as propriedades:

Font: Tahoma,Tamanho 11

Height: 20

Left: 120

TextAlign: 3-fmTextAlignCenter

Top: 168

Width: 54

Outras propriedades desta Caixa de Texto serão alteradas quando o Formulário for inicializado (evento initialize).

Deverá ficar como na imagem abaixo:

Criando Formulário

Agora para finalizar a interface adicionaremos três botões de comando ao nosso formulário.

Na Caixa de Ferramentas clique na ferramenta Botão de Comando (CommandButton1) para adicionar o primeiro Botão de Comando no formulário e posicione-a dentro do segundo Quadro (Frame2), em seguida altere as propriedades:

Caption: Adicionar

Font: Tahoma, Tamanho 11

Height: 24

Left: 6

Top: 12

Width: 66

Na Caixa de Ferramentas clique na ferramenta Botão de Comando (CommandButton2) para adicionar o segundo Botão de Comando no formulário e posicione-a dentro do segundo Quadro (Frame2), em seguida altere as propriedades:

Caption: Limpar

Font: Tahoma, Tamanho 11

Height: 24

Left: 6

Top: 42

Width: 66

Na Caixa de Ferramentas clique na ferramenta Botão de Comando (CommandButton4) para adicionar o terceiro Botão de Comando no formulário e posicione-a dentro do segundo Quadro (Frame2), em seguida altere as propriedades:

Caption: Fechar

Font: Tahoma, Tamanho 11

Height: 24

Left: 6

Top: 72

Width: 66

Com isso, concluímos então a criação da interface da nossa aplicação a qual, seguindo todos os passos acima, deverá ficar com a mesma aparência da imagem abaixo:

Formulário

Adicionando o Código para preencher a tabela

Iniciaremos agora a criação do código que será responsável pelo bom funcionamento da aplicação e fará todo trabalho pesado por trás do formulário.

Na Janela de Projeto selecione o Formulário (frmResultadoFinal) e clique em Exibir código ou use o botão direito do mouse.

Exibir Código

Na caixa objeto selecione UserForm.

UserForm

Em procedimento selecione Initialize:

Evento Initialize

Dentro de evento Initialize do nosso Formulário (frmResultadoFinal) adicione o seguinte código.

' Adiciona itens à Caixa de Combinação
With ComboBox1
.AddItem ""
.AddItem "5ª Série/6º Ano"
.AddItem "6ª Série/7º Ano"
.AddItem "7ª Série/8º Ano"
.AddItem "8ª Série/9º Ano"
End With
With TextBox5
.Enabled = False
.BackColor = &H8000000F
.SpecialEffect = fmSpecialEffectEtched
End With


Ficará como na imagem abaixo:

Código VBA

Selecione a Caixa de Texto (TextBox1), clique com o botão direito do mouse sobre ela e em seguida clique em Exibir código.

Exibir Código

Na Janela de Código selecione o procedimento KeyPress.

KeyPress

Dentro do Evento KeyPress adicione o código abaixo:

'só aceita digitação de números
Select Case KeyAscii
Case 8, 48 To 57
Case Else
KeyAscii = 0
End Select


Deverá ficar como na imagem abaixo:

Código VBA

Selecione as demais Caixas de Textos e execute a mesma operação em cada uma delas. Deverá ficar como na imagem abaixo:

Código VBA

No formulário selecione o Botão de Comando (CommandButton1), clique com o botão direito do mouse e depois clique em Exibir Código.

Exibir Código

No Evento Click do Botão adicione o seguinte código:

On Error GoTo CommandButton1_Click_Err 'Tratamento de erro

'Validação
If ComboBox1.Text = "" Then
MsgBox "Selecione a série.", vbOKOnly, "Resultado Final"
Exit Sub
ComboBox1.SetFocus
ElseIf TextBox1.Text = "" Then
MsgBox "Informe o número de alunos matriculados", vbOKOnly, "Resultado Final"
Exit Sub
TextBox1.SetFocus
End If
If TextBox2.Text = "" Then
TextBox2.Text = "0"
End If
If TextBox3.Text = "" Then
TextBox3.Text = "0"
End If
If TextBox4.Text = "" Then
TextBox4.Text = "0"
End If

'Calcula o total de alunos promovidos
TextBox5.Value = Val(TextBox1 - TextBox2 - TextBox3 - TextBox4)

'Limpa a tabela para receber novos dados
With ActiveDocument.Tables(1)
.Cell(Row:=1, Column:=1).Range.Delete
.Cell(Row:=3, Column:=1).Range.Delete
.Cell(Row:=3, Column:=2).Range.Delete
.Cell(Row:=3, Column:=3).Range.Delete
.Cell(Row:=3, Column:=4).Range.Delete
.Cell(Row:=3, Column:=5).Range.Delete

'Preenche a tabela com os dados do formulário
.Cell(1, 1).Range.InsertAfter ComboBox1
.Cell(3, 1).Range.InsertAfter TextBox1.Text
.Cell(3, 2).Range.InsertAfter TextBox2.Text
.Cell(3, 3).Range.InsertAfter TextBox3.Text
.Cell(3, 4).Range.InsertAfter TextBox4.Text
.Cell(3, 5).Range.InsertAfter TextBox5.Text
End With

'Fecha o Formulário (frmResultadoFinal)
Unload Me

'Em caso de erro a rotina abaixo é executada
CommandButton1_Click_Fim:
Exit Sub 'Sai do prodecimento
CommandButton1_Click_Err:
MsgBox "Erro n. " & Err.Number & " - " & Err.Description
Resume CommandButton1_Click_Fim


Deverá ficar como na imagem abaixo:

Código do Formulário


Código VBA

Uma observação importante: Os trechos de texto em verde são apenas comentários que inseri entre os códigos para que todos possam entender melhor como funciona cada rotina (linha de código).

Se a Caixa de Combinação estiver vazia será exibida uma mensagem solicitando ao usuário para selecionar uma série/ano.

Se a Caixa de Texto (TextBox1) estiver vazia, será exibida uma mensagem ao usuário solicitando que seja informado o nº de alunos matriculados.

Se as Caixas de Textos (TextBox2, TextBox3 e TextBox4) estiverem vazias serão preenchidas com 0 (zero) para não gerar erros no cálculo exibido na Caixa de Texto (TextBox5).

Agora selecione o Botão de Comando (CommandButton2), clique com o botão direito do mouse sobre o mesmo e em seguida clique em Exibir Código.

Exibir Código VBA

No evento clique deste botão adicione o seguinte código:

'Limpa a Caixa de Combinação e as Caixas de Textos
ComboBox1.Text = ""
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
TextBox5.Text = ""

Deverá ficar como na imagem abaixo:

Código VBA

Selecione o Botão de Comando (CommandButton3), clique com o botão direito do mouse sobre o mesmo e em seguida clique em Exibir Código.

Exibir Código VBA

No evento clique deste botão adicione o seguinte código:

Unload Me

Deverá ficar como na imagem abaixo:

Código VBA

Com isso concluímos nossa aplicação.

Agora vamos criar uma macro para exibir o formulário sempre que for necessário.

Em um novo módulo adicione o código abaixo:

Sub resultadofinal()
frmResultadoFinal.Show
End Sub


Código VBA

Feche o Editor do Visual Basic para voltar ao Word.

Agora vamos testar nossa aplicação.

Na Guia Desenvolvedor, no Grupo Código clique em Macros.

Macros

Selecione a macro resultadofinal e clique em Executar.

Executar Macro

Preencha o formulário e clique em Adicionar.

Preencher Formulário

Os dados do formulário serão inseridos na tabela. Veja o resultado na imagem abaixo:

tabela preenchida com os dados do formulário


Gostou? Se quiser mais eu tenho um e-Book sobre VBA que você pode se interessar.
Confira aqui




Formação Pacote Office



eBook Word 2010 VBA

Política de Privacidade  |   © 2013 Tutoriais Word - Todos os direitos reservados