Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
DiscussionsAccessExcelInfoPathOutlookPowerPointPublisherWord
DirectoryUser Groups
Related Topics
Outlook ExpressInternet ExplorerWindowsMS Server ProductsMore Topics ...

MS Office Forum / Word / Mailmerge and Fax / December 2004

Tip: Looking for answers? Try searching our database.

Outlook -> Word Mailmerge defaults question - Zipcode missing from Addressblock

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Michael Krause - 01 Dec 2004 22:45 GMT
As the subject says, I'm using Outlook 2003 to export into Word 2003. Using
the Tools/Mail merge in Outlook, I bring the contacts into Word.  Then using
the Mail merge wizard in Word, by *default* the postal code field is left
out when I use the 'Addressblock' reference in my label.

To fix this, I obviously need to match fields.  But this seems to be a
prevalent issue with every install of Office I've worked with.  Is there an
explanation why the Zipcode/Postalcode field does not automatically match
with respect to the Addressblock?

I want this thing to default so addressblock works fine within my merge in
Word without manually referencing ZipPostalcode (or whatever the field is
called) in 'Match Fields'.

Is it possible to default?
Peter Jamieson - 02 Dec 2004 11:29 GMT
The only way I have found to do this is to fix the field name in the Word
document that Outlook exports when you initiate your merge from Oulook
(assuming that's what you're doing. I wrote the following code a while ago
and you would probably have to create a toolbar button and run it manually
once Outlook has opened the merge main document.

For more background info you might be able to follow this link or search in
Google groups for, e.g. jamieson vba zip map fields scripting

http://groups-beta.google.com/group/microsoft.public.word.mailmerge.fields/brows
e_thread/thread/6a7be7708b7233f8/fde7b98f943986bb?q=jamieson+map+fields+vba&_don
e=%2Fgroups%3Fq%3Djamieson+map+fields+vba%26qt_s%3DSearch+Groups%26&_doneTitle=B
ack+to+Search&&d#fde7b98f943986bb


Sub ModifyZipFieldName()

' Macro by PJ Jamieson, March 2004
' This macro looks for a field name called "ZIP/Postal Code"
' in the header record of a mail merge data source and modifies
' the name so that Word automatically maps its ZIP/Postal code
' to the field.
' Written for use with Word 2003/Outlook 2003, but it may work
' in earlier versions
' Requires the "Microsoft Scripting Runtime" object library:
' You will need to use the VBA Editor menu command
' Tools|References to add a reference to this library

' This macro is intended to be used when a merge is initiated
' from Outlook. In that case, I believe the following assumptions
' can be made:
'   The merge data file is a Unicode format text file
'   (notice that by default it has a .doc extension)
'   Outlook reconnects to the data source and removes any
'   sort/filter options you may have defined

' The macro also assumes that it is OK to create/overwrite a
' file with the same name as the data source + ".tmp"

Dim oFileSystemObject As Scripting.FileSystemObject
Dim oSourceStream As Scripting.TextStream
Dim oDestStream As Scripting.TextStream
Dim sHeaderRecord As String
Dim sMergeDataSourceName As String
Dim vMergeType As WdMailMergeMainDocType
Dim vMergeDestination As WdMailMergeDestination
On Error GoTo finish

With ActiveDocument.MailMerge
If .MainDocumentType = wdNotAMergeDocument Then
  MsgBox "This document is not a mail merge main document"
Else
  ' Save merge type and destination
  vMergeType = .MainDocumentType
  vMergeDestination = .Destination
  sMergeDataSourceName = .DataSource.Name
  .MainDocumentType = wdNotAMergeDocument

  Set oFileSystemObject = CreateObject("Scripting.FileSystemObject")
  With oFileSystemObject
    ' This assumes the file is Unicode format (I think)
    Set oSourceStream = .OpenTextFile( _
                          FileName:=sMergeDataSourceName, _
                          IOMode:=ForReading, _
                          Create:=False, _
                          Format:=TristateTrue)

    ' Verify that the required string exists before going any further
    sHeaderRecord = oSourceStream.ReadLine
    If InStr(1, sHeaderRecord, "ZIP/Postal Code") = 0 Then
      MsgBox "Could not find the field name 'ZIP/Postal Code'" & _
             "in the merge data source." & _
             vbCrLf & "You will need to match fields manually"
      oSourceStream.Close
      Set oSourceStream = Nothing
    Else
      ' create the output file
      Set oDestStream = .CreateTextFile( _
                        FileName:=sMergeDataSourceName + ".tmp", _
                        overwrite:=True, _
                        unicode:=True)

      ' Make the substitution. The field names "ZIP" and "Postcode"
      ' seem to be recognised automatically by Word

      oDestStream.WriteLine _
        Text:=Replace(sHeaderRecord, "ZIP/Postal Code", "ZIP")

      ' copy the rest of the file
      Do Until oSourceStream.AtEndOfStream
        oDestStream.WriteLine Text:=oSourceStream.ReadLine
      Loop

      ' Close everything and replace the old file by the new one
      oDestStream.Close
      Set oDestStream = Nothing
      oSourceStream.Close
      Set oSourceStream = Nothing
      oFileSystemObject.DeleteFile _
        filespec:=sMergeDataSourceName, _
        force:=True
      oFileSystemObject.MoveFile _
        Source:=sMergeDataSourceName + ".tmp", _
        Destination:=sMergeDataSourceName
    End If
  End With
  Set oFileSystemObject = Nothing
End If

' Set up the mail merge data source etc. again
' You may find that you need to save and restore
' other settings
.OpenDataSource Name:=sMergeDataSourceName
.MainDocumentType = vMergeType
.Destination = vMergeDestination

End With

Exit Sub
finish:
Close #1
MsgBox "Error " & Err.Number & _
       " when trying to modify the ZIP field name: " & _
       vbCrLf & Err.Description
Err.Clear
On Error Resume Next
Set oSourceStream = Nothing
Set oDestStream = Nothing
Set oFileSystemObject = Nothing
End Sub
Peter Jamieson

> As the subject says, I'm using Outlook 2003 to export into Word 2003.
> Using the Tools/Mail merge in Outlook, I bring the contacts into Word.
[quoted text clipped - 11 lines]
>
> Is it possible to default?
Michael Krause - 03 Dec 2004 20:37 GMT
Thanks for the reply, and the script. So the simple answer is that Microsoft
didn't set the field names to match between Microsoft Word and Outlook, thus
explaining the discrepency requiring manual intervention.

> The only way I have found to do this is to fix the field name in the Word
> document that Outlook exports when you initiate your merge from Oulook
[quoted text clipped - 4 lines]
> For more background info you might be able to follow this link or search
> in Google groups for, e.g. jamieson vba zip map fields scripting
Peter Jamieson - 04 Dec 2004 00:24 GMT
I'd prefer a slightly less simple answer, e.g. that in the English language
version of Office, Microsoft did not ensure that the field name generated by
Outlook's Mail merge option would be automatically matched in Word. I have
no idea why they did not get this right in the first place and why they have
not fixed it either in Word 2003 or one of the SPs. It would be interesting
to know whether the same problem occurs in other language versions of
Office.

Peter Jamieson

> Thanks for the reply, and the script. So the simple answer is that
> Microsoft didn't set the field names to match between Microsoft Word and
[quoted text clipped - 8 lines]
>> For more background info you might be able to follow this link or search
>> in Google groups for, e.g. jamieson vba zip map fields scripting

Rate this thread:






 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.