2014-07-04 42 views
3

我想写代码:选择成员方法

  1. 发现/定位出现在表的Word文档中的第一列的特定字符串。
  2. 将这些字符串映射到它们出现的表的直接标题中。
  3. 列出Excel电子表格中的字符串标题映射。 警告:VBA代码将查找的所有字符串都列在现有的Excel电子表格下。

到目前为止,我已经能够很容易地找出#1和#3了。我想#2将需要使用Selection类。我一直在尝试熟悉它,但我遇到了很多麻烦。例如,我写了一个简单的子例程,将选择光标重新设置为一个单词文档的开头。该子从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.

回答

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,这将在该行上引发“错误参数”错误。