“用户定义types未定义”错误

试图执行这个macros时出现上述错误。 我对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 

您的错误是由以下原因造成的:

 Dim oTable As Table, oRow As Row, 

这些types, TableRow不是Excel原生的variablestypes。 您可以通过以下两种方法之一来解决此问题:

  1. 包含对Microsoft Word对象模型的引用。 从工具|做到这一点 参考,然后添加对MS Word的参考。 虽然不是绝对必要的,但您可能希望完全限定像Dim oTable as Word.Table, oRow as Word.Row这样的对象Dim oTable as Word.Table, oRow as Word.Row 。 这被称为早期绑定。 在这里输入图像描述
  2. 或者,要使用后期绑定方法,则必须将对象声明为通用Objecttypes: Dim oTable as Object, oRow as Object 。 使用这种方法,您不需要添加对Word的引用,但是您也失去了VBE中的智能帮助。

我没有testing过你的代码,但是我怀疑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 
 Sub DeleteEmptyRows() Worksheets("YourSheetName").Activate On Error Resume Next Columns("A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete End Sub 

以下代码将删除工作表(YourSheetName)中列A的内容为空的所有行。

编辑:用户定义types未定义是由“oTable作为表”和“oRow作为行”引起的。 用对象replace表格和行,以解决错误并进行编译。