Solved

Exporting data to Word Table

Posted on 2007-11-18
8
604 Views
Last Modified: 2013-11-27
Hi Experts

I looking for some quick help here. The following code is from a reference by Liwin, Getz & Gunderloy.

It takes data from an ADO recordset and populates a table. In my case I have a recordset made up from data in two Memo fields. The Enter key has been used to create linebreaks and blank lines within the data. This is creating a problem with the .ConvertToTable Method. The getstring method that has optional parameters as follows

StringFormat
A StringFormatEnum value that specifies how the Recordset should be converted to a string. The RowDelimiter, ColumnDelimiter, and NullExpr parameters are used only with a StringFormat of adClipString.
NumRows
Optional. The number of rows to be converted in the Recordset. If NumRows is not specified, or if it is greater than the total number of rows in the Recordset, then all the rows in the Recordset are converted.
ColumnDelimiter
Optional. A delimiter used between columns, if specified, otherwise the TAB character.
RowDelimiter
Optional. A delimiter used between rows, if specified, otherwise the CARRIAGE RETURN character.
NullExpr
Optional. An expression used in place of a null value, if specified, otherwise the empty string.

I suspect I need a parameter other than carriage return for the row delimiter. Can any one suggest some settings here?

Function CreateTableFromRecordset( _
 rngAny As Word.Range, _
 rstAny As ADODB.Recordset, _
 Optional fIncludeFieldNames As Boolean = False) _
 As Word.Table

    Dim objTable As Word.Table
    Dim fldAny As ADODB.Field
    Dim varData As Variant
    'Dim strBookmark As String
    Dim cField As Long

    ' Get the data from the recordset
    varData = rstAny.GetString()
   
    ' Create the table
    With rngAny
   
        ' Creating the basic table is easy,
        ' just insert the tab-delimted text
        ' add convert it to a table
        .InsertAfter varData
        Set objTable = .ConvertToTable()
       
        ' Field names are more work since
        ' you must do them one at a time
        If fIncludeFieldNames Then
            With objTable
           
                ' Add a new row on top and make it a heading
                .Rows.Add(.Rows(1)).HeadingFormat = True
               
                ' Iterate through the fields and add their
                ' names to the heading row
                For Each fldAny In rstAny.Fields
                    cField = cField + 1
                    .Cell(1, cField).Range.Text = fldAny.Name
                Next
            End With
        End If
    End With
    Set CreateTableFromRecordset = objTable
End Function

Kelvin
0
Comment
Question by:Kelvin Sparks
  • 4
  • 3
8 Comments
 
LVL 76

Expert Comment

by:GrahamSkan
ID: 20311734
You cannot specify the row delimiter in the ConvertToTable method as you have discovered.

However vbVerticalTab (Ascii 11) works as just as well.

    varData = rstAny.GetString(, , , vbVerticalTab)

No other changes are needed


0
 
LVL 27

Accepted Solution

by:
jjafferr earned 500 total points
ID: 20312955
This is how to do it with Bookmark in Word
http://www.experts-exchange.com/Microsoft/Development/MS_Access/Q_22516294.html#18930694

download the zip file, which contains the mdb and the Word template.

jaffer
0
 
LVL 22

Author Comment

by:Kelvin Sparks
ID: 20315925
Thanks jjaffer. That appears to do the trick.
0
 
LVL 76

Expert Comment

by:GrahamSkan
ID: 20316223
Kelvin,
In case searchers conclude that my answer to the question that you actually asked about an alternative delimiter was incorrect, can you say whether you tried it, and if so, did it work?
0
Maximize Your Threat Intelligence Reporting

Reporting is one of the most important and least talked about aspects of a world-class threat intelligence program. Here’s how to do it right.

 
LVL 22

Author Comment

by:Kelvin Sparks
ID: 20316669
Yes, I tried your solution first, but it did resolve the problem. Pity as it would have been the simpler solution.

Regards


kelvin
0
 
LVL 22

Author Comment

by:Kelvin Sparks
ID: 20316672
Oooops Read di not resolve the problem
0
 
LVL 76

Expert Comment

by:GrahamSkan
ID: 20316700
OK. I did test it, and it worked in the tests, but we do now have on record that there are some unspecified circumstances where it doesn't.
Thank you.
0
 
LVL 76

Expert Comment

by:GrahamSkan
ID: 20333637
Thinking about it, there is a possibility that the substitute delimiter also appeared in the fields. That would also produce unwanted results.
0

Featured Post

Why You Should Analyze Threat Actor TTPs

After years of analyzing threat actor behavior, it’s become clear that at any given time there are specific tactics, techniques, and procedures (TTPs) that are particularly prevalent. By analyzing and understanding these TTPs, you can dramatically enhance your security program.

Join & Write a Comment

Overview: This article:       (a) explains one principle method to cross-reference invoice items in Quickbooks®       (b) explores the reasons one might need to cross-reference invoice items       (c) provides a sample process for creating a M…
Microsoft Word is a program we have all encountered at some point, but very few of us have dug deep into its full scope of features, let alone customized it to suit our needs. Luckily making the ribbon (aka toolbar, first introduced in Word 2007) wo…
Using Microsoft Access, learn some simple rules for how to construct tables in a relational database. Split up all multi-value fields into single values: Split up fields that belong to other things into separate tables: Make sure that all record…
Learn how to make your own table of contents in Microsoft Word using paragraph styles and the automatic table of contents tool. We'll be using the paragraph styles in Word’s Home toolbar to help you create a table of contents. Type out your initial …

707 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

14 Experts available now in Live!

Get 1:1 Help Now