当我尝试执行这个宏时,我得到了上面的错误。我对宏和一般的编码都是新手,所以请原谅我的无知。
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
发布于 2014-06-17 20:09:00
您的错误是由以下原因引起的:
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中的智能感知帮助。我还没有测试过您的代码,但是我怀疑除非您将其适当地限定为Word.Application对象的一个实例,否则ActiveDocument
将不能在方法#2中工作。我在您提供的代码中看不到这一点。示例如下:
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
发布于 2019-05-02 23:38:54
我参加聚会要迟到了。尝试如下替换,我的工作很好- "DOMDocument“到"MSXML2.DOMDocument60”"XMLHTTP“到"MSXML2.XMLHTTP60”
发布于 2014-06-17 18:51:03
Sub DeleteEmptyRows()
Worksheets("YourSheetName").Activate
On Error Resume Next
Columns("A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub
下面的代码将删除A列内容为空的工作表(YourSheetName)上的所有行。
编辑:未定义自定义类型是由"oTable As Table“和"oRow As Row”引起的。用Object替换Table和Row以解决错误并使其编译。
https://stackoverflow.com/questions/24261557
复制相似问题