是否从excel VBA中引用word表?

是否从excel VBA中引用word表?,vba,excel,ms-word,Vba,Excel,Ms Word,我正在尝试编写一个excel宏,该宏在word中打开一个rtf文档,并基于两个变量(pulldate和rmname)返回特定表的页码。下面的代码在word VBA中非常有效(当然,使用“activedocument”代替“wdApp”),但当我试图从excel中实现它时,它会崩溃 Sub find_pulls() Dim wdApp As Object Dim pullsheets As Object Dim totalPullPages As Integer Dim pg As Pages D

我正在尝试编写一个excel宏,该宏在word中打开一个rtf文档,并基于两个变量(pulldate和rmname)返回特定表的页码。下面的代码在word VBA中非常有效(当然,使用“activedocument”代替“wdApp”),但当我试图从excel中实现它时,它会崩溃

Sub find_pulls()
Dim wdApp As Object
Dim pullsheets As Object
Dim totalPullPages As Integer
Dim pg As Pages
Dim start As String
Dim finish As String
Dim rmname As String
Dim tnumber As Integer
Dim pSnumber As String
Dim pEnumber As String
Dim pulldate As String

Set wdApp = CreateObject("word.application")

Set pullsheets = wdApp.documents.Open _
("C:\Users\xxxxx\xxxxxxxx\xxxxx\pullsheets.rtf")
wdApp.visible = True


pulldate = "05/06/2017"
rmname = "503"

For Each cell In wdApp.ActiveDocument.Tables

    If InStr(cell, rmname) > 0 Then
cell.Select
    If Left(wdApp.Selection.Cells(5).Range.Text, 10) = pulldate Then
        tnumber = wdApp.ActiveDocument.Range(0, wdApp.Selection.Tables(1).Range.End).Tables.Count
        Debug.Print tnumber
        Set t = wdApp.ActiveDocument.Tables(tnumber)
        pSnumber = t.Range.Information(wdActiveEndPageNumber)
        Set t = wdApp.ActiveDocument.Tables(tnumber + 1)
        pEnumber = t.Range.Information(wdActiveEndPageNumber)
        Debug.Print "Pull is pg." & pSnumber & "-" & pEnumber
    End If
End If

Next cell

wdApp.Quit SaveChanges:=wdDoNotSaveChanges

End Sub
我在“pSnumber=…”行得到“Value out of range”。我假设这是因为excel中没有像word中那样的表对象-是否有任何解决方法来获取我要查找的值

目标是搜索文档(文档总是以两个表格的形式设置,一个表格包含标题信息,另一个表格紧随其后包含行项目),并返回找到的表格的结束页码。然后,这些值将用于复制表数据或打印这些页面。Pulldate和rmname最终将成为基于用户输入的变量。没有直接在word中运行宏的选项,因为.rtf文件是系统生成的,必须通过主excel工作表访问


有什么想法吗

是否在Excel VBA项目中添加了对Word对象库的引用?如果你还没有这样做,那就开始吧。Excel VBA不知道常量的值,例如
wdActiveEndPageNumber
,这些常量是在Word对象模型中定义的,但不是Excel VBA的一部分。我建议您将Option Explicit添加到每个源模块中。谢谢!成功了!里奇-谢谢你提醒我,我通常是这么做的,只是很快就把这个扔到了一起,一定是忘了!我建议您在VBE中的“工具选项”下启用“需要变量声明”。这样您就不会忘记添加Option Explicit。您是否在Excel VBA项目中添加了对Word对象库的引用?如果你还没有这样做,那就开始吧。Excel VBA不知道常量的值,例如
wdActiveEndPageNumber
,这些常量是在Word对象模型中定义的,但不是Excel VBA的一部分。我建议您将Option Explicit添加到每个源模块中。谢谢!成功了!里奇-谢谢你提醒我,我通常是这么做的,只是很快就把这个扔到了一起,一定是忘了!我建议您在VBE中的“工具选项”下启用“需要变量声明”。这样您就不会忘记添加显式选项。