vba - 选拔成员方法

标签 vba excel ms-word

我正在尝试编写以下代码:

  1. 查找/定位 Word 文档表格第一列中出现的特定字符串。
  2. 将这些字符串映射到它们所在表格的直接标题。
  3. 列出 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/

相关文章:

vba - 剪切和粘贴覆盖范围对象定义

VBA 检查范围内的值

c# - 使用互操作 C# 格式化 Word 文档

linux - 在 Linux 服务器上创建和编辑 MS-Word 文档?

vba - 我是否正确使用了 isnumeric 函数?

vba - 当用户在 Excel 中向右滚动时移动形状(VBA)

ms-access - 运行时错误 '3001' : Invalid Argument when creating a table in Access VBA

c# - Excel 2013 崩溃

excel - 在添加数组之前检查文件扩展名是否为 .xlsx

ms-word - 当我更改页面方向时重新开始页码 - Microsoft Office