我试图在Word 2010中使用MailMerge。
我有一个由TAB分隔的文件database.dat,如下所示:
ID Name Street
1 John FooBar 1
2 Smith FooBar 2Word中使用此文件的VBA代码如下:
ActiveDocument.MailMerge.OpenDataSource Name:="C:/database.dat", _
ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
AddToRecentFiles:=False, Revert:=False, Format:=wdOpenFormatAuto我现在可以使用文本中文件中的字段。所以一切正常。
问题:
我需要对VBA中的数据做一些进一步的阐述,因此我使用以下方法获取MergeField值:
Function getInfoField(mergefield As String)
On Error GoTo MergeFieldNotFound:
getInfoField = ActiveDocument.MailMerge.DataSource.DataFields(mergefield).Value
GoTo EndFunc
MergeFieldNotFound:
getInfoField = ""
EndFunc:
End Function但是,如果合并字段值的长度超过255个字符,则将被切断。所以如果我插入
MsgBox Len(ActiveDocument.MailMerge.DataSource.DataFields(mergefield).Value)它为一个字符串输出255,例如500个字符。
但是在word文档中,所有500个字符都显示在合并字段中。
问题:
如何从VBA中的合并字段中获取超过255个字符?
发布于 2012-12-21 18:11:37
我还没有试过,但以下几点可能会奏效:
请注意--我不记得细节,但有些版本的Word不能很好地处理DOCVARIABLE字段中的一些字符,特别是如果它们在表中。
否则,我认为您必须尝试打开到该文件的另一个连接(例如,可以使用ADO和Jet/ACE provider+Text文件IISAM进行连接),这可能会使提取文本变得更容易,但您必须有一种机制(例如一个唯一的键)来通过ADO检索正确的记录,就像当前在MailMerge中选择的那样。
https://stackoverflow.com/questions/13606840
复制相似问题