[AccessD] Semi OT - Word automation question.

Bobby Heid bheid at appdevgrp.com
Fri Feb 11 09:13:18 CST 2005


Hi all,

I am trying out different ways to let the users design a document and using
bookmarks and flag fields have access add data to it.  

In my particular situation, there are about 10 fields that I am using
bookmarks for.  If this were all, then I'd just automate a mail merge and be
done with it.  The problem is, there are two tables that I need that can
have from zero to many items in it.  

What I have done is this:
1) Start Word (hidden, no updates)
2) Create two blank documents, one is a temp document, the other is the
output document.
3) For each record in the master recordset:
	a) Clear the temp document
	b) Copy the master document to the temp document
	c) Change all of the bookmarks to their correct value with code
like:
	   .Bookmarks("Period").Range.Text = Format$(Nz(rs![Period], ""),
"MMM, yyyy")
	d) Search for my first table place holder, "[[WCTable]]".  If it is
found, I select 
	   it and replace it with "".
	e) Insert a table with the proper number of rows (which is 3 for
header and total 
	   rows plus the number of detail rows for this contract).
	f) Merge the 1st row to one cell and insert the title.
	g) Insert the column headers into the 2nd row.
	h) Insert the "Total" text on the last row.
	i) Loop through a recordset and insert text from the current record
into the 
         correct row in the table.
	j) Perform steps d-i except that we will be working with the second
table.
	k) Copy the temp document,
	l) Append the copied temp document to the end of the output
document.
4) Save the output document.
5) Close word without saving any changes.

It all works ok.  The problem is that it takes approximately 2 seconds per
document.  Does anyone have any ideas on how to speed this up?  I have a
feeling it is how I am processing the tables.  I have read that inserting
all the text for the tables as text into the document then converting text
to a table is much faster, but I'm not quite sure how to do that with what I
have to deal with.

Another method that I read about was to iterate through the cells collection
and insert the text that way.

Anyone know what the best way to do this is?

Sorry about the long post.

Thanks,
Bobby





More information about the AccessD mailing list