我正在尝试编写以下代码:
- 查找/定位 Word 文档表格第一列中出现的特定字符串。
- 将这些字符串映射到它们所在表格的直接标题。
- 列出 Excel 电子表格中的字符串标题映射。 警告:VBA 代码将查找的所有字符串都列在现有的 Excel 电子表格下。
到目前为止,我已经能够相当轻松地找出#1 和#3。我认为#2 需要使用 Selection 类。我一直在努力熟悉它,但遇到了很多麻烦。例如,我编写了一个简单的子例程,将选择光标重置到 Word 文档的开头。该子程序是从 Excel VBA 中的主子程序调用的。
Private Sub FindHeadings()
Set wrdApp = CreateObject("Word.Application")
wrdApp.Visible = True
Set wrdDoc = wrdApp.Documents.Open("C:/Users/c11145/Desktop/SSDD_Trace/Test3.docx")
'wrdDoc.Selection.HomeKey Unit:=wdStory
Selection.HomeKey Unit:=wdStory
End Sub
我收到运行时错误“438”:对象不支持此属性或方法。
我也尝试过:
Dim sel As Selection
sel.HomeKey Unit:=wdStory
但是我收到运行时错误 91。
最佳答案
我认为您需要限定您的Selection
,因为这也是 Excel 中的一个可用类。
我非常确定,每当一个类名可能被多个库共享时,最短的引用(即事件应用程序的)就是默认值,因此除非您限定 Selection
将始终引用 Excel选择(形状、单元格/范围等)
当我在 Word(不是从 Excel)中运行一些非常简单的东西时,我认为这可以满足您的需要:
Sub test()
Dim wrdDoc As Word.Document
Dim wrdApp As Word.Application
Set wrdDoc = ActiveDocument
Set wrdApp = wrdDoc.Parent
wrdApp.Selection.HomeKey Unit:=wdStory
End Sub
将其移植到 Excel,尝试将 Selection
限定为 wrdApp
的成员:
wrdApp.Selection.HomeKey Unit:=6 'wdStory
我使用 6
而不是枚举常量 wdStory
的原因是,除非您使用显式引用 Word 对象模型的早期绑定(bind),否则后者将会失败。如果您没有进行早期绑定(bind),那么 wdStory
本质上是一个具有 空
值的未声明变量,这将在该行引发“错误参数”错误。
关于vba - 选拔成员方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24577191/