我在 WinWord2007 中编写了一个宏,它在 Excel 表中列出了样式及其属性。该表可通过以下 3 行访问:
Dim Oxl_Sheet As Object
Set Oxl_Sheet = CreateObject("Excel.Sheet")
Oxl_Sheet.Application.Visible = True
我可以毫无问题地写入表格的各个单元格,例如:
Oxl_Sheet.Application.Cells(iRow, 2).Value = ActiveDocument.Styles.(iStyle).NameLocal
我现在想在同一个 Word 宏中对已完成的表格进行排序,但我发现自己完全无法做到这一点。例如,在以下行中:
Oxl_Sheet.Application.Sort.SortFields.Add Key:=Range("I2:I356"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
编译器抱怨 Sub/Function“Range”尚未定义。
有人可以给我提示吗?
答案1
进行一些更改即可开始运行:
1) 如果您想要在宏运行之后保留 Excel 表,请移动该行:
Dim Oxl_Sheet 作为对象
到宏页面的顶部,在任何功能之外。
2)为了修复编译错误,请包含对 Excel 库的引用来定义范围函数:
- 在 VBA 编辑器中,“工具”->“参考...”
- 选择“Microsoft Excel <12.0 或 14.0> 对象库
3)更改排序行的语法以限定范围引用的对象:
Oxl_Sheet.Application.Sort.SortFields.添加键:=Oxl_Sheet.Application.Range("I2:I356"), SortOn:=xlSortOnValues