Pontos
11-25-2013, 07:53 AM
Hi,
I have found this macro which is working, but not entirely as I want.
I have large document (on average with 500 pages) in which I have to delete every row in tables that have in second column no value.
Document is made using Mail Merge, so I have table on 1 page, than on 3, 6, 8,...
So far is macro deleting all empty rows when in 2 columns is no value but only in table in which is cursor, and not in all other tables.
Public Sub DeleteEmptyColums()
Dim Table As Table, Row As Range, Cell As Cell, Counter As Long, _
NumRows As Long, TextInRow As Boolean
' Specify which table you want to work on.
For Each Table In ActiveDocument.Tables
' Set a range variable to the first row's range
Set Row = Table.Rows(1).Range
NumRows = Table.Rows.Count
Application.ScreenUpdating = False
For Counter = 1 To NumRows
StatusBar = "Row " & Counter
TextInRow = False
With Selection.Tables(1)
For i = .Rows.Count To 1 Step -1
If Len(.Cell(i, 2).Range.Text) = 2 Then
.Rows(i).Delete
End If
Next i
End With
Next Counter
Next Table
Application.ScreenUpdating = True
End Sub
Could somebody help me.
Kind regards,
Rok
I have found this macro which is working, but not entirely as I want.
I have large document (on average with 500 pages) in which I have to delete every row in tables that have in second column no value.
Document is made using Mail Merge, so I have table on 1 page, than on 3, 6, 8,...
So far is macro deleting all empty rows when in 2 columns is no value but only in table in which is cursor, and not in all other tables.
Public Sub DeleteEmptyColums()
Dim Table As Table, Row As Range, Cell As Cell, Counter As Long, _
NumRows As Long, TextInRow As Boolean
' Specify which table you want to work on.
For Each Table In ActiveDocument.Tables
' Set a range variable to the first row's range
Set Row = Table.Rows(1).Range
NumRows = Table.Rows.Count
Application.ScreenUpdating = False
For Counter = 1 To NumRows
StatusBar = "Row " & Counter
TextInRow = False
With Selection.Tables(1)
For i = .Rows.Count To 1 Step -1
If Len(.Cell(i, 2).Range.Text) = 2 Then
.Rows(i).Delete
End If
Next i
End With
Next Counter
Next Table
Application.ScreenUpdating = True
End Sub
Could somebody help me.
Kind regards,
Rok