Microsoft Office Forums

Go Back   Microsoft Office Forums > >

Reply
 
Thread Tools Display Modes
  #1  
Old 04-02-2013, 12:05 PM
iiiiifffff iiiiifffff is offline macro works on windows, not on mac Windows XP macro works on windows, not on mac Office 2010 32bit
Novice
macro works on windows, not on mac
 
Join Date: Apr 2012
Posts: 5
iiiiifffff is on a distinguished road
Default macro works on windows, not on mac [solved]

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
At work, I have been moved to a Mac running Word 2011, and this does not seem to work any more. It looks like it runs the merge and then doesn't reinsert the fields into either of the documents. Also, the new document does not get locked. I think it is just giving up after it runs the merge.

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...
Reply With Quote
  #2  
Old 04-02-2013, 05:58 PM
fumei fumei is offline macro works on windows, not on mac Windows 7 64bit macro works on windows, not on mac Office XP
Expert
 
Join Date: Jan 2013
Posts: 440
fumei is on a distinguished road
Default

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?
Reply With Quote
  #3  
Old 04-03-2013, 12:42 PM
iiiiifffff iiiiifffff is offline macro works on windows, not on mac Windows XP macro works on windows, not on mac Office 2010 32bit
Novice
macro works on windows, not on mac
 
Join Date: Apr 2012
Posts: 5
iiiiifffff is on a distinguished road
Default

Thanks for the reply. It seems to quit at:
Code:
ActiveDocument.MailMerge.Execute
The error that I get is:
Code:
Run-time error '5535':
Word could not finish merging these documents or inserting this database.
Ok....just did some playing. The original data source was a csv text file. When I converted it to xslx, it worked perfectly. So, problem solved.
Reply With Quote
Reply



Similar Threads
Thread Thread Starter Forum Replies Last Post
macro works on windows, not on mac Excel 2003 Macro compatibilty with Windows 7 Chayes Excel Programming 1 07-15-2012 09:05 AM
macro works on windows, not on mac Why it works but the macro is error in VB? tinfanide Excel Programming 5 12-03-2011 12:53 AM
macro works on windows, not on mac 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

Other Forums: Access Forums

All times are GMT -7. The time now is 02:59 AM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.
Search Engine Optimisation provided by DragonByte SEO (Lite) - vBulletin Mods & Addons Copyright © 2024 DragonByte Technologies Ltd.
MSOfficeForums.com is not affiliated with Microsoft