尝试执行此宏时出现上述错误。我对Macros和编码很新,所以请原谅无知。
由于
Sub DeleteEmptyRows()
Dim oTable As Table, oRow As Row, _
TextInRow As Boolean, i As Long
Application.ScreenUpdating = False
For Each oTable In ActiveDocument.Tables
For Each oRow In oTable.Rows
TextInRow = False
For i = 2 To oRow.Cells.Count
If Len(oRow.Cells(i).Range.Text) > 2 Then
'end of cell marker is actually 2 characters
TextInRow = True
Exit For
End If
Next
If TextInRow = False Then
oRow.Delete
End If
Next
Next
Application.ScreenUpdating = True
End Sub
答案 0 :(得分:15)
您的错误是由以下原因引起的:
Dim oTable As Table, oRow As Row,
这些类型Table
和Row
不是Excel原生的变量类型。您可以通过以下两种方式之一解决此问题:
Dim oTable as Word.Table, oRow as Word.Row
这样的对象。这称为早期绑定。 Object
类型:Dim oTable as Object, oRow as Object
。使用此方法,您不需要添加对Word的引用,但您也失去了VBE中的intellisense帮助。我没有测试过您的代码,但我怀疑ActiveDocument
无法在Excel中使用方法#2,除非您将其适当地扩展到Word.Application对象的实例。我没有在你提供的代码中看到任何地方。一个例子就是:
Sub DeleteEmptyRows()
Dim wdApp as Object
Dim oTable As Object, As Object, _
TextInRow As Boolean, i As Long
Set wdApp = GetObject(,"Word.Application")
Application.ScreenUpdating = False
For Each oTable In wdApp.ActiveDocument.Tables
答案 1 :(得分:0)
我参加聚会迟到了。尝试按以下方式更换,我的工作非常完美- “ DOMDocument”到“ MSXML2.DOMDocument60” 从“ XMLHTTP”到“ MSXML2.XMLHTTP60”
答案 2 :(得分:-1)
Sub DeleteEmptyRows()
Worksheets("YourSheetName").Activate
On Error Resume Next
Columns("A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub
以下代码将删除工作表(YourSheetName)中列A的内容为空白的所有行。
编辑:未定义的用户定义类型由“oTable As Table”和“oRow As Row”引起。将Table和Row替换为Object以解决错误并使其编译。