来源:https://www.msofficeforums.com/mail-merge/21803-mailmerge-tips-tricks.html
我使用的代码代表Word上的单个pdf,我有两个问题无法解决。
代码工作(赞美Macropod!)然而,我的excel文件有头开始前的顶部行2,所以我不能拉。datafield从任何东西,不只是第一列作为顶部行格式化为合并和中心。这是一个客户端文档,所以我必须与他们的数据作为给定的工作,我不能只是删除那些前2行,我知道这会解决它。
我不明白的一个想法是如何得到这个的最后一行:
With .DataSource
.FirstRecord = i
.LastRecord = i
.ActiveRecord = i
If Trim(.DataFields("Last_Name")) = "" Then Exit For
'StrFolder = .DataFields("Folder") & ""
StrName = .DataFields("Last_Name") & "_" & .DataFields("First_Name")
可以拉入多个字段,我希望保存为lastname_firstname。pdf这里我做了一些尝试
- . dataffields ("Last_Name") - this works.
- .DataFields("Last_Name","_",. dataffields ("F2")-这不起作用,它确实起作用,但是在一个单独的出现后它出错了,保存一个单独的PDF文件。
是否有一种方法可以使用数据字段作为一种+1,IE我想要A2_B2.pdf,我可以写A2 &A2+1怎么得到B2?
另一种可能性是引用起始点,在这种情况下,我不知道添加像"Finish &Merge"按钮有选项From,并做一个范围,这可能会有所帮助,但我仍然需要整理数据字段,这将不得不与排序的转换工作。
Thanks in advance
对于第一个'issue',您可以使用如下命令:
Sub Merge_To_Individual_Files()
'Sourced from: https://www.msofficeforums.com/mail-merge/21803-mailmerge-tips-tricks.html
'Note: this code requires a reference to the Excel object model.
'See under the VBE's Tools|References.
Application.ScreenUpdating = False
Dim StrFolder As String, StrName As String, MainDoc As Document, i As Long, j As Long
Dim StrMMSrc As String, StrSht As String, StrTxt As String
Const StrNoChr As String = """*./:?|"
With ActiveDocument.MailMerge.DataSource
StrMMSrc = .Name: StrSht = Split(Split(.QueryString, "`")(1), "$")(0)
End With
Dim xlApp As New Excel.Application, xlWkBk As Excel.Workbook, xlWkSht As Excel.Worksheet
xlApp.Visible = False
Set xlWkBk = xlApp.Workbooks.Open(FileName:=StrMMSrc, ReadOnly:=True, AddToMru:=False)
Set xlWkSht = xlWkBk.Names(StrTbl).RefersTo
StrTxt = xlWkSht.Range("F2").Text
xlWkBk.Close: xlApp.Quit: Set xlWkSht = Nothing: Set xlWkBk = Nothing
Set MainDoc = ActiveDocument
...
我不知道你的另一个"问题"是什么。在任何情况下,你都应该将问题限制在每个线程一个。