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

Trabalhando com tabelas - VBA


Neste tutorial apresentarei alguns exemplos de como utilizar tabelas através do VBA.

O exemplo abaixo insere uma tabela de cinco colunas e oito linhas no início do documento ativo. A estrutura For Each...Next é usada para percorrer cada célula da tabela.

Dentro da estrutura For Each...Next, o método InsertAfter é usado para adicionar texto às células da tabela (Célula 1, Célula 2 e assim por diante). Neste exemplo adicionaremos números sequenciais em cada célula, mas também pode ser adicionado um texto qualquer.

No ambiente de desenvolvimento insira um novo módulo.

Inserir Módulo

Na Janela de Código adicione o Código abaixo:

Sub criartabela()
Dim docActive As Document
Dim novatab As Table
Dim celulatabela As Cell
Dim intCount As Integer
Set docActive = ActiveDocument
Set novatab = docActive.Tables.Add( Range:=docActive.Range(Start:=0, End:=0), NumRows:=8, NumColumns:=5)
intCount = 1
For Each celulatabela In novatab.Range.Cells
celulatabela.Range.InsertAfter "0" & intCount
intCount = intCount + 1
Next celulatabela
novatab.AutoFormat Format:=wdTableFormatColorful2, ApplyBorders:=True, ApplyFont:=True, ApplyColor:=True
End Sub


Deverá ficar como na imagem a seguir:

Janela de Código

Feche o Editor do Visual Basic (VBA) para voltar ao Word.

Fechar e voltar para  Microsoft Word

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

Macros

Selecione a macro criartabela e clique em Executar.

Executar macro

Veja o Resultado:

Tabela

Se quiser criar a tabela sem conteúdo retire a variável celulatabela e as linhas de código da estrutura For Each ...Next.

Ficará assim:

Sub criartabela()
Dim docActive As Document
Dim novatab As Table
Dim intCount As Integer
Set docActive = ActiveDocument
Set novatab = docActive.Tables.Add(Range:=docActive.Range(Start:=0, End:=0), NumRows:=8, NumColumns:=5)
intCount = 1
novatab.AutoFormat Format:=wdTableFormatColorful2, ApplyBorders:=True, ApplyFont:=True, ApplyColor:=True
End Sub


O resultado será como a imagem abaixo:

Tabela

Pra inserir um texto, por exemplo, na primeira célula use a macro abaixo:

Sub inserirtexto()
If ActiveDocument.Tables.Count >= 1 Then
With ActiveDocument.Tables(1).Cell(Row:=1, Column:=1).Range
.Delete
.InsertAfter Text:="Tutoriais"
End With
End If
End Sub


Veja o resultado:

Tabela VBA

Pra inserir textos, por exemplo, em cada célula da primeira linha use a macro abaixo:

Sub inserirtexto2()
If ActiveDocument.Tables.Count >= 1 Then
With ActiveDocument.Tables(1).Cell(Row:=1, Column:=1).Range
.Delete
.InsertAfter Text:="Tutoriais"
End With
With ActiveDocument.Tables(1).Cell(Row:=1, Column:=2).Range
.Delete
.InsertAfter Text:="Word 2003"
End With
With ActiveDocument.Tables(1).Cell(Row:=1, Column:=3).Range
.Delete
.InsertAfter Text:="Word 2007"
End With
With ActiveDocument.Tables(1).Cell(Row:=1, Column:=4).Range
.Delete
.InsertAfter Text:="Word 2010"
End With
With ActiveDocument.Tables(1).Cell(Row:=1, Column:=5).Range
.Delete
.InsertAfter Text:="VBA"
End With
End If
End Sub


Veja o resultado:

Tabela

Considerações Finais:

Se o documento possuir mais tabelas elas serão referenciadas como: .Tables(1), .Tables(2), .Tables(3)... e assim sucessivamente, conforme o número de tabelas que o documento possui.

Row:=1 - refere-se a primeira linha da tabela; Row:=2 – refere-se a segunda linha da tabela e assim sucessivamente, conforme o número de linhas da tabela.

Column:=1 – refere-se a primeira coluna da tabela; Column:=2 – refere-se a segunda coluna da tabela e assim sucessivamente, conforme o número de colunas da tabela.

A linha de Código “If ActiveDocument.Tables.Count >= 1 Then” verifica se o documento possui uma ou mais tabelas. Você pode criar uma rotina de tratamento de erro e/ou exibir uma mensagem ao usuário para o caso de não haver tabelas no documento.

Veja no código abaixo:

Sub inserirtexto2()
If ActiveDocument.Tables.Count >= 1 Then
With ActiveDocument.Tables(1).Cell(Row:=1, Column:=1).Range
.Delete
.InsertAfter Text:="Tutoriais"
End With
With ActiveDocument.Tables(1).Cell(Row:=1, Column:=2).Range
.Delete
.InsertAfter Text:="Word 2003"
End With
With ActiveDocument.Tables(1).Cell(Row:=1, Column:=3).Range
.Delete
.InsertAfter Text:="Word 2007"
End With
With ActiveDocument.Tables(1).Cell(Row:=1, Column:=4).Range
.Delete
.InsertAfter Text:="Word 2010"
End With
With ActiveDocument.Tables(1).Cell(Row:=1, Column:=5).Range
.Delete
.InsertAfter Text:="VBA"
End With
Else
MsgBox "Não há tabelas no documento", vbOKOnly, "Informação ao usuário"
End If
End Sub


Caso não haja nenhuma tabela no documento a mensagem abaixo será exibida.

Caixa de Mensagem


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