Home |
Search |
Today's Posts |
#1
|
|||
|
|||
Deleting blank rows in all tables
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 |
#2
|
|||
|
|||
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 -- Message posted via http://www.officekb.com |
#3
|
|||
|
|||
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! -- Regards, Jay Freedman Microsoft Word MVP FAQ: http://word.mvps.org KWC via OfficeKB.com wrote: 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 |
Reply |
Thread Tools | |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Forum | |||
Blank spaces between tables in word | Tables | |||
disalignment of "header row(s)" in tables? | Tables | |||
Word tables should permit header rows to repeat only on every oth. | Tables | |||
Splitting Rows of tables across page breaks | Microsoft Word Help | |||
Blank spaces between rows | Tables |