Link to home
Start Free TrialLog in
Avatar of mgmhicks
mgmhicks

asked on

Word mail merge showing 12:00:00AM

I have a spreadsheet that is used as the data file for a word mail merge.  This is done in vba.   Everything merges over just fine, except 1 column that keeps send over 12:00:00AM even though the spreadsheet data looks something like "Monthy Pet Fee - $20.00"

I have 2 columns like this that are updated by a recordset do while, and the merge field names are nonRent1, nonRent2, nonRent3.   nonRent1 comes out great, nonRent2 looks like the same data in nonRent1 but prints as 12:00:00am on the word document.  I have deleted the column and added it, I have changed the column format to text, and I don't know why I cant get this to work.   I have the code that creates the data and fills the fields, and then also the merge code to show you.  Hope someone can help.

thanks
 
    ' create a new file based on the merge document
    Set doc = wrdApp.documents.Add(sPathFileTemplate)
    
    ' Hide Word (actually just make sure it doesn't show)
    wrdApp.Visible = True

'    ' Connect the datasource to the merge document
   doc.MailMerge.OpenDataSource Name:=ActiveWorkbook.FullName, LinkToSource:=True, AddToRecentFiles:=False, SQLStatement:="SELECT * FROM `MergeRecords$`"
  
    ' Execute the merge
    With doc.MailMerge
        .Destination = wdSendToNewDocument
        .SuppressBlankLines = True
'        With .DataSource
'            .FirstRecord = wdDefaultFirstRecord
'            .LastRecord = wdDefaultLastRecord
'        End With
        .Execute Pause:=False
    End With
'
'    Dim docloop As Document
'
'
'
'    For Each docloop In wrdApp.documents
'        myName = docloop

Open in new window



 rs.Open strSQL, con, adOpenStatic
      c = 37
    
        If rs.RecordCount > 0 Then
              Do Until rs.EOF
               Dim myItem As String
               myItem = CStr(rs(2)) & Space(1) & "-" & Space(1) & CStr(FormatCurrency(rs("amtofcharge")))
                Workbooks.Item(2).Sheets("MergeRecords").Cells(myline, c) = myItem
                c = c + 1
                rs.MoveNext
            Loop
        Else
            Workbooks.Item(2).Sheets("MergeRecords").Cells(myline, c) = "Not Applicable"
        End If
    

Open in new window

Avatar of GrahamSkan
GrahamSkan
Flag of United Kingdom of Great Britain and Northern Ireland image

It's not clear what value is added by using VBA.

I think that we need to see the Mail Merge main document and a sample of the datasource.
Avatar of mgmhicks
mgmhicks

ASKER

thank you for the response.  As it turned out I added code to put a least a space in the field, rather than leave it blank and that worked.  Apparently with the field/column blank it looked at the column as something else, but when I started putting in = space(1), in the column then it started working for all the columns.  Something to keep in mind for the future.
ASKER CERTIFIED SOLUTION
Avatar of GrahamSkan
GrahamSkan
Flag of United Kingdom of Great Britain and Northern Ireland image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
12:00:00 AM is usually what you get for a blank Date field.  Sometimes you get the whole date, usually 12/30/1899, which can be disconcerting in a document.  It seems that Excel is somehow processing this cell as a Date value.  There are often data type conversion problems between Access and Excel, especially with dates.