我正在尝试编写一个excel宏,它在word中打开一个rtf文档,并根据几个变量(pulldate和rmname)返回特定表的页码。以下代码在单词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 = ..."线。我假设这是因为excel中没有表对象,因为有单词 - 是否有任何解决方法来获取我正在寻找的值?
目标是搜索文档(它总是以两个表的形式进行格式化,一个包含标题信息,另一个紧跟在行项目之后),并返回找到的表的结束页码。然后,这些值将用于复制表数据或打印这些页面。 Pulldate和rmname最终将是基于用户输入的变量。没有选项直接在word中运行宏,因为.rtf文件是系统生成的,必须通过主Excel工作表访问。
有什么想法吗?