选择成员方法

时间:2014-07-04 15:13:13

标签: vba excel-vba ms-word word-vba excel

我正在尝试编写代码:

  1. 查找/查找Word文档中第一列表格中显示的特定字符串。
  2. 将这些字符串映射到它们出现的表格的直接标题。
  3. 在Excel电子表格中列出字符串标题映射。 警告:VBA代码将查找的所有字符串都列在现有的Excel电子表格下。
  4. 到目前为止,我已经能够很容易地找出#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。

1 个答案:

答案 0 :(得分:2)

我认为您需要对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对象模型的显式引用。如果你没有进行早期绑定,那么wdStory本质上是一个具有empty值的未声明变量,它会引发一个错误的参数"那条线上的错误。