![]() |
|
#1
|
|||
|
|||
|
EDIT: This was not a macro issue, but an issue with the data source. Re-saving as a xslx file fixed the problem. Thanks for the help, though.
------------------ Hi. I have a document that I have been using for a number of years in word for windows (both 2003 and 2010). This document contains legacy form fields and I have been successfully using this macro to run a mail merge to create a new document with the form fields intact: Code:
Sub PreserveMailMergeFormFieldsNewDoc()
Dim fFieldText() As String
Dim iCount As Integer
Dim fField As FormField
Dim sWindowMain, sWindowMerge As String
On Error GoTo ErrHandler
' Store Main merge document window name.
sWindowMain = ActiveWindow.Caption
' Because the document contains form fields,
' it should be protected, so unprotect document.
If ActiveDocument.ProtectionType <> wdNoProtection Then
ActiveDocument.Unprotect
End If
' Loop through all text form fields
' in the main mail merge document.
For Each aField In ActiveDocument.FormFields
' If the form field is a text form field...
If aField.Type = wdFieldFormTextInput Then
' Redim array to hold contents of text field.
ReDim Preserve fFieldText(2, iCount + 1)
' Place content and name of field into array.
fFieldText(0, iCount) = aField.Result
fFieldText(1, iCount) = aField.Name
fFieldText(2, iCount) = aField.TextInput.Default
' Select the form field.
aField.Select
' Replace it with placeholder text.
Selection.TypeText "<" & fFieldText(1, iCount) & "PlaceHolder>"
' Increment icount
iCount = iCount + 1
End If
Next aField
' Perform mail merge to new document.
ActiveDocument.MailMerge.Destination = wdSendToNewDocument
ActiveDocument.MailMerge.Execute
' Find and Replace placeholders with form fields.
doFindReplace iCount, fField, fFieldText()
' Protect the merged document.
ActiveDocument.Protect Password:="xxxx", NoReset:=True, _
Type:=wdAllowOnlyFormFields
' Set zoom to 100 on merged document
ActiveWindow.ActivePane.View.Zoom.Percentage = 100
' Get name of final merged document.
sWindowMerge = ActiveWindow.Caption
' Reactivate the main merge document.
Windows(sWindowMain).Activate
' Find and replace placeholders with form fields.
doFindReplace iCount, fField, fFieldText()
' Switch back to the merged document.
Windows(sWindowMerge).Activate
ErrHandler:
End Sub
Sub doFindReplace(iCount As Integer, fField As FormField, fFieldText() As String)
' Go to top of document.
Selection.HomeKey Unit:=wdStory
' Initialize Find.
Selection.Find.ClearFormatting
With Selection.Find
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
' Loop form fields count.
For i = 0 To iCount
' Execute the find.
Do While .Execute(FindText:="<" & fFieldText(1, i) _
& "PlaceHolder>") = True
' Replace the placeholder with the form field.
Set fField = Selection.FormFields.Add _
(Range:=Selection.Range, Type:=wdFieldFormTextInput)
' Restore form field contents and bookmark name.
fField.Result = fFieldText(0, i)
fField.Name = fFieldText(1, i)
fField.TextInput.Default = fFieldText(2, i)
Loop
' Go to top of document for next find.
Selection.HomeKey Unit:=wdStory
Next
End With
End Sub
Really, I am out of my league here, so any help would be appreciated. Please note that I did not write the original macro, but got it from doing some googling. Thanks in advance for any help that anyone can give me. Last edited by iiiiifffff; 04-03-2013 at 12:44 PM. Reason: Add note to solution... |
|
#2
|
|||
|
|||
|
I do not use a Mac so it is hard to suggest anything...but...the first step is to ask if you have any errors. You do not say. If you do have any errors please state what they are, with the full text of any message.
If you do not have any errors is it just a case of nothing happening? Have you tried to step through the code? That is, working through each instruction one step at a time? |
|
#3
|
|||
|
|||
|
Thanks for the reply. It seems to quit at:
Code:
ActiveDocument.MailMerge.Execute Code:
Run-time error '5535': Word could not finish merging these documents or inserting this database. |
|
| Thread Tools | |
| Display Modes | |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
Excel 2003 Macro compatibilty with Windows 7
|
Chayes | Excel Programming | 1 | 07-15-2012 09:05 AM |
Why it works but the macro is error in VB?
|
tinfanide | Excel Programming | 5 | 12-03-2011 12:53 AM |
Works to word
|
Janette | Word | 1 | 11-12-2011 08:23 AM |
| Converting from Works | Menno Hershberger | Office | 0 | 09-01-2010 11:33 PM |
MS Works 2000
|
mommu | Office | 4 | 01-23-2006 02:40 PM |