【发布时间】:2018-05-21 21:01:48
【问题描述】:
我正在尝试按页拆分我的 word 文档,并将拆分保存为新文件,这些文件从每个页面上相同的各个表格中的单元格命名。我遇到的错误是:
运行时错误“5941”:
请求的集合成员不存在。
到目前为止我的代码是:
Sub splitter()
'
'
Dim Counter As Long, Source As Document, Target As Document
Set Source = ActiveDocument
Selection.HomeKey Unit:=wdStory
Pages = Source.BuiltInDocumentProperties(wdPropertyPages)
Counter = 0
While Counter < Pages
Counter = Counter + 1
DocName = "" _
& Left(ActiveDocument.Tables(3).Rows(1).Cells(2).Range.Text, _
Len(ActiveDocument.Tables(3).Rows(1).Cells(2).Range.Text)) _
& Left(ActiveDocument.Tables(5).Rows(1).Cells(2).Range.Text, _
Len(ActiveDocument.Tables(5).Rows(1).Cells(2).Range.Text)) _
& Left(ActiveDocument.Tables(6).Rows(1).Cells(2).Range.Text, _
Len(ActiveDocument.Tables(6).Rows(1).Cells(2).Range.Text))
Source.Bookmarks("\Page").Range.Cut
Set Target = Documents.Add
Target.Range.Paste
Target.SaveAs FileName:=DocName
Target.Close
Wend
End Sub
标题中指定的错误发生在这些代码行中:
DocName = "" _
& Left(ActiveDocument.Tables(3).Rows(1).Cells(2).Range.Text, _
Len(ActiveDocument.Tables(3).Rows(1).Cells(2).Range.Text)) _
& Left(ActiveDocument.Tables(5).Rows(1).Cells(2).Range.Text, _
Len(ActiveDocument.Tables(5).Rows(1).Cells(2).Range.Text)) _
& Left(ActiveDocument.Tables(6).Rows(1).Cells(2).Range.Text, _
Len(ActiveDocument.Tables(6).Rows(1).Cells(2).Range.Text))
我不确定如何解决此错误。
第二个问题是在这段代码中我可以在哪里设置文档保存到的目录?
【问题讨论】:
-
文档中是否有(至少)六个表格?该文件是您认为的“活跃”文件吗?这些表中的每一个是否都有(至少)两个单元格?请注意,由于您在开始时将活动文档设置为
Source,因此在这些代码行中您仍应使用Source- 而不是ActiveDocument。 -
如果你剪切一页,Table(2) 变成 Table(1)。 ;-) 最好向后循环 - 或者总是参考表(1)
-
我每页有 8 个表;我 99.99% 确定它是“活动”文档。我已经对我的代码进行了修改,感谢您指出这一点!我知道在同一段代码中收到“424”Object required 错误......你知道可能导致这种情况的原因吗?我需要定义它吗?
-
在你的位置,我可能会单步执行代码 (F8) 以确定触发它的确切行。我还将声明并分配给一个
Range对象(或多个对象),并在逐步使用Range.Select以查看 VBA 认为正确的范围是否与您认为应该使用的范围相同。 -
附加说明:
Bookmarks("\Page")将引用当前的 SELECTION(包含选择的页面)。事情可能会出错,因为这不是您所期望的 - 选择表格/行/单元格范围之一也可能会有所帮助。