错误5941 VBA Word 2016 - 保存文件,从表中获取名称

时间:2018-04-25 10:02:27

标签: vba word-vba word-2016

我正在尝试按页面拆分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))

我不确定如何解决此错误。

第二个问题是在哪里可以设置文档保存到此代码中的目录?

1 个答案:

答案 0 :(得分:0)

问题的至少一部分是你得到每个细胞的细胞末端字符。尝试:

DocName = "" _
    & Split(Source.Tables(3).Cell(1 ,2).Range.Text, vbCr)(0) _
    & Split(Source.Tables(5).Cell(1, 2).Range.Text, vbCr)(0) _
    & Split(Source.Tables(6).Cell(1, 2).Range.Text, vbCr)(0)

您也没有提供文件扩展名,格式等作为SaveAs的一部分。

您可能还对 Mailmerge提示和技巧主题中的拆分合并输出到单独文档感兴趣:http://www.msofficeforums.com/mail-merge/21803-mailmerge-tips-tricks.html除其他外,还显示如何提供所需的SaveAs参数。