Deleting blank rows in all tables

  • Thread starter KWC via OfficeKB.com
  • Start date
K

KWC via OfficeKB.com

I need a macro that will look at all tables in a document, then delete any
rows in those tables where the entire row is blank.

This is just a start, and does not work. Would someone provide some guidence?
thanks in advance.

Option Explicit
Sub delete_blank_rows()
Dim odoc1 As Document
Dim lngRow As Long
Dim oTable As Table
Dim orow As Row

Selection.HomeKey Unit:=wdStory
If ActiveDocument.Tables.Count >= 1 Then
Set odoc1 = ActiveDocument
For Each oTable In odoc1.Tables

For lngRow = oTable.Rows.Count To 1 Step -1
If Selection.Text = "" Then
oTable.Rows(lngRow).Delete
End If
Next lngRow

Next oTable
End If
End Sub
 
K

KWC via OfficeKB.com

Here is what I ended up doing and it works. Got help from the WOPR board.

Function RowIsBlank(r As Word.Row) As Boolean
If Len(Replace(r.Range.Text, Chr(13) & Chr(7), vbNullString)) = 0 Then ' Chr
13 and 7 are paragraph marker and end cell marker
RowIsBlank = True 'row contain no text
Else
RowIsBlank = False 'row contains some text
End If
End Function

Sub Delete_Blank_Rows()
Dim odoc1 As Document
Dim oTable As Table
Dim rw As Word.Row
Dim lngrow As Integer
Dim row_cnt As Integer

MacroEntry
Selection.HomeKey Unit:=wdStory
If ActiveDocument.Tables.Count >= 1 Then
Set odoc1 = ActiveDocument
For Each oTable In odoc1.Tables
On Error Resume Next
For lngrow = oTable.Rows.Count To 1 Step -1
On Error Resume Next
If RowIsBlank(oTable.Rows(lngrow)) Then
oTable.Rows(lngrow).Delete
If Err.Number = 0 Then
row_cnt = row_cnt + 1
End If
End If
Next lngrow
Next oTable
End If
MacroExit
Selection.HomeKey Unit:=wdStory
MsgBox "Finished - " & row_cnt & " blank rows were deleted"
End Sub

Sub MacroEntry()
Sbar = Application.DisplayStatusBar
Application.DisplayStatusBar = True
Application.ScreenUpdating = False
End Sub

Sub MacroExit()
Application.StatusBar = False
Application.DisplayStatusBar = Sbar
Application.ScreenUpdating = True
End Sub
 
J

Jay Freedman

Hi KWC,

Yes, that works. Just one nitpick: The two lines that say

Selection.HomeKey Unit:=wdStory

should be removed. There's no reason to move the Selection (the insertion
point) to the beginning of the document, since the rest of the macro doesn't
depend at all on where the insertion point is. And there's certainly no
reason to do it twice!
 

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