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

Home > VBA > Trabalhando com tabelas


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







Conteúdo Correspondente:




eBook Word 2010 VBA

© 2013 Tutoriais Word - Todos os direitos reservados