Automatic Hiding of Tables based upon value in first cell

S

Spankit115

I am creating a Word 2002 document from mail merge that may have hundreds of
records (and so hundreds of pages), usually generating 2 or 3 pages per
record. The data (from my family history hobby) is being merged onto the
document into separate tables. For example the first table would be the
persons name and address, then the second table could be names of parents,
the third table names of grandparents, the fourth great-grandparents, etc.

The problem is that in many cases there is no actual data in every table and
so this is resulting in empty tables and wasted paper as there is no need to
print the empty tables.

I can produce the data so that I can put a flag as the first cell for each
table to indicate if it should be hidden or not.

I am therefore looking to run a macro after the mail-merge to go through the
document and see if there is any value in the first cell of the table, if so,
no problem, if no value then I want to hide the whole table so that nothing
is shown and the rest of the data moves up. Then carry on down through the
document repeating the process. I should then have a document that contains
some pages with a record that has only one table, other records with maybe 3
tables, etc.

I have never done a Word macro before so some simple tips and steps would be
appreciated. Many thanks in advance.
 
D

Doug Robbins - Word MVP

The following macro will delete any tables in the document in which the
first cell in the first row is empty:

Dim i As Long
Dim cell1 As Range
With ActiveDocument
For i = .Tables.Count To 1 Step -1
Set cell1 = .Tables(i).Cell(1, 1).Range
cell1.End = cell1.End - 1
If cell1 = "" Then
cell1.Tables(1).Delete
End If
Next i
End With


--
Hope this helps.

Please reply to the newsgroup unless you wish to avail yourself of my
services on a paid consulting basis.

Doug Robbins - Word MVP
 
S

Spankit115

Hi Doug,

Wow! That is just about perfect. Many thanks for your help with this.

I have tested this out and it works beautifully except one last bit that
would finish it off.

I have a couple of records where table 1 has nothing, table 2 has data,
table 3 has nothing and table 4 has data. There is a 1 line gap between each
table but when I run the macro to delete the tables, it leaves 2 lines gap in
between the remaining tables. Is there any way to clear this up? Maybe
something along the lines that when you delete a table, also delete the next
line after the table? Is that possible.

This whole area of macros is opening up so many new ways of using Word that
I will go out buy some books on this!

Thanks again!
 
G

Greg Maxey

I'm not Doug, but perhaps this will work for you:

Sub Test()
Dim i As Long
Dim cell1 As Range
Dim oRng As Range
With ActiveDocument
For i = .Tables.Count To 1 Step -1
Set cell1 = .Tables(i).Cell(1, 1).Range
cell1.End = cell1.End - 1
If cell1 = "" Then
Set oRng = cell1
cell1.Tables(1).Delete
oRng.Delete
End If
Next i
End With
End Sub
 
D

Doug Robbins - Word MVP

Use

Dim i As Long
Dim cell1 As Range
With ActiveDocument
For i = .Tables.Count To 1 Step -1
Set cell1 = .Tables(i).Cell(1, 1).Range
cell1.End = cell1.End - 1
If cell1 = "" Then
Set cell1 = cell1.Tables(1).Range
cell1.End = cell1.End + 1
cell1.Delete
End If
Next i
End With


--
Hope this helps.

Please reply to the newsgroup unless you wish to avail yourself of my
services on a paid consulting basis.

Doug Robbins - Word MVP
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top