简体   繁体   中英

Replace zero length mail merge field with user input

I have a MS Word template where I have certain mail-merge fields and one of those fields in the source doucment is sometimes empty. I am using below IF condition and taking user's input for the date field but I cannot update the source mail merge document with this information.

If Len(ActiveDocument.MailMerge.DataSource.DataFields("startDate").Value) < 1 Then
    InputStartDate = Format(InputBox("Enter Commenced date ..."), "mm/dd/yyyy")
    ActiveDocument.MailMerge.DataSource.DataFields("startDate").Value = InputStartDate
End If

I get an error here that says mail merge source doucment field connot be edited or is locked, something like this.

Is there any way through which I could either update the source field and through application refresh method, I populate that mail merge field with this user input date?

Alternatively I could otherwise add a few lines of code to perform following steps:
1- Save this document (using Saveas2 method) as ".docx" by converting it from ".docm"
2- Break the mail merge connection through VBA code
3- Select all mail merge fields and using Sendkeys "CTRL+SHIFT+F9" covert all of them to normal strings.
4- Make that particular mail-merge field a Bookmark field and then finally update that bookmark field with the user input.

This sounds like a longer route of getting a simple empty mail merge field issue fixed but this is so far all that I could think of. If you have any better suggestion, please let me know.

Instead of vba, do this with fields. Then it becomes part of the Mail Merge.

{ IF { MergeField startDate } < 1 "{ FillIn "What is the Start Date?" }" "{MergeField starttDate }" }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM