 |
|
|
|
 |
How to set the result of a text formfield in a Word 2000 table, using VBA, if the string
contains carriage returns
|
Article contributed by Dave Rado
The following works in Word 97:
ActiveDocument.FormFields("Text2").Result = "Line1" & vbCr + "Line2"
Unfortunately in Word 2000, if the formfield is in a table, the carriage
returns are converted to invalid ascii characters:

There are two workarounds:
|
1.
|
One is to use line breaks instead of paragraph marks. The following works in Word 97 and above:
ActiveDocument.FormFields("Text1").Result = "Line1" & Chr$(11) & "Line2"
Or you can use the strangely named vbVerticalTab constant instead of Chr$(11)
ActiveDocument.FormFields("Text1").Result = "Line1" & vbVerticalTab & "Line2"
|
|
2.
|
The other workaround is to use the following:
ActiveDocument.Unprotect
ActiveDocument.Bookmarks("Text1").Range.Fields(1).Result.Text = _
"Line1" & vbCr + "Line2"
ActiveDocument.Protect Type:=wdAllowOnlyFormFields, NoReset:=True
This also works in all versions of Word VBA. As well as allowing you to use real paragraph marks, this method has
the advantage that it works with strings longer than 256 characters; but
the disadvantage that it you have to unprotect and reprotect. See also: How to set the result of a text formfield using VBA, if the string is longer then 256 characters
|
|





|