使用宏分割word文档,如何指定名称?

时间:2013-11-27 14:54:11

标签: excel vba word-2010

我已经尝试在这里找到这个并且看不到答案所以我想问道,如果这是重复的道歉。

我正在使用邮件合并来填写Word 2010中的表。这会创建同一个表的数百个页面,但每个页面都有不同的数据。然后,我使用宏将word文档拆分为每页单独的文档。我对Macros的了解是非常有限,但我已经有了它的工作,如果我只想要一个标准编号的东西,我知道如何修改名称,但我想要的是它使用一个该表的字段作为名称,因此它们都将其标识号作为其文件名。

这是我为宏所获得的代码:

Sub BreakOnPage()
   ' Used to set criteria for moving through the document by page.
   Application.Browser.Target = wdBrowsePage

   For i = 1 To ActiveDocument.BuiltInDocumentProperties("Number of Pages")

      'Select and copy the text to the clipboard.
      ActiveDocument.Bookmarks("\page").Range.Copy

      ' Open new document to paste the content of the clipboard into.
      Documents.Add
      Selection.Paste
' Removes the break that is copied at the end of the page, if any.
      Selection.TypeBackspace
      ChangeFileOpenDirectory "F:\MyWork"
      DocNum = DocNum + 1
      ActiveDocument.SaveAs FileName:="test_" & DocNum & ".doc"
      ActiveDocument.Close

      ' Move the selection to the next page in the document.
      Application.Browser.Next
   Next i
   ActiveDocument.Close savechanges:=wdDoNotSaveChanges
End Sub

但我不知道如何让它在文档中选择字段。非常感谢任何帮助!

此外,当它将它拆分为单个文档时,它似乎在它的底部添加了一个空白页面,所以当我打开其中一个文件时,我有我的表,但后面有一个空白页面,我不能弄清楚如何摆脱这一点,所以提示也将是一个巨大的帮助。

1 个答案:

答案 0 :(得分:0)

您没有指定所需的单元格,但这应该让您入门:

Dim sCellText As String
sCellText = ActiveDocument.Tables(1).Rows(1).Cells(1).Range
sCellText = Left$(sCellText, Len(sCellText) - 2)

ActiveDocument.SaveAs FileName:="sCellText & ".doc"

这会将文档保存为第一行中第一个单元格的值