Word Document with many tables takes a long time to save

Posted on 2014-04-08
Last Modified: 2014-04-10
I am using VBA (Office 2010 version) to assemble a large document with many tables, some of which themselves have up to 10,000 rows (typically 4 columns only).
I've been through the recommendations for optimisation, implemented most of them, and assembly is quite fast. However, the save time at the end is up to 45 minutes for a document around 50MB.
Any ideas on how to reduce this, please?
Question by:MikeDiggins
LVL 19

Accepted Solution

Raheman M. Abdul earned 300 total points
ID: 39985984
Check the document for extension. if it is .docx or not.  
.docx version are better with compression than .doc file

Increase virtual memory on a PC can reduce time:
Go to Start > Control Panel > Advanced tab > Performance Settings button > Advanced tab > Virtual Memory Change button.
Click 'Custom Size' and set Initial and Max to 4096.
Click the Set button. OK. Reboot and see how it goes.
LVL 45

Expert Comment

ID: 39986014
While 50MB is a big Word document, I've never seen a Save operation take such a long time.  Are you sure the time is being spent on just the Save operation and not something else?  Depending on your algorithm, you might be spending the majority of your time concatenating strings, rather than doing I/O.

Check to see if Word is repaginating the document.  I've done some Word automation and had to put a wait into the process in order to give Word the time to repaginate.  The larger the document, the greater the wait.

Are you writing to a local hard drive or some file server storage (NAS, SAN, etc.)?

What optimizations have you implemented?
LVL 76

Expert Comment

ID: 39986049
There may be some sort of corruption in the file. Try saving it in a different format (e.g. RTF), reopening it, and saving it again in Word format. This should force Word  to restructure the file.
Gigs: Get Your Project Delivered by an Expert

Select from freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely and get projects done right.


Author Comment

ID: 39989681
Thank for your comments. I probably should have mentioned this is running on a Citrix farm so I don't believe memory is an issue. The document build is reasonably fast, its only the saving I have an issue with. I'll try the suggestions on pagination and .docx save format - both make good sense.

I'm showing progress messages, and the save operation is the only code between two of them, so I'm sure the time is spent on just that instruction - but good point.

Optimisations I'm suppressing are spelling, grammar, repagination, screen updating, minimising size of individual tables (the document eventually contains around 80 tables). THe document build is in Draft view. If there are other things I should try or any pet articles in this area, I'd love to hear about them.
LVL 45

Assisted Solution

aikimark earned 200 total points
ID: 39990557
* Make sure that your Citrix session has been allocated enough memory.
* Ask the Citrix and network admins to look at your process from their perspective.
* Start looking at the OpenXML SDK for .Net applications.  If we can't get this performance problem straightened out, then the next step is to look for alternative solutions and OpenXML eliminates the use of the Word application executable.
* You should run this application in visible mode to make sure it isn't doing something that you think it isn't (shouldn't be) doing.  I've experience Word automation scenarios where I've explicitly turned off a property only to find that my VBA statement had no effect. :-(
* You might need to add some DoEvents into your code to allow Word to catch up to your document.  
* Even though you have turned off repagination, it only means that background repagination is suspended.  When Word needs to repaginate, it will repaginate.  You will have to wait for the repagination to finish.  Repagination happens even when a document shrinks.

You should probably do some testing to see if you can isolate which parts of the document creation process are causing you to wait.  How big does a table need to be before you can detect it?  Does the placement of these tables matter? (early, middle, or at the end of the document)

Author Comment

ID: 39991002
Thanks again - our timeframes didn't allow enough to look at OpenXML this time round but its certainly on the list.
Repagination doesn't seem to be the issue; I've asked VBA to repaginate before saving and it only takes a few seconds. The issue seems to be the format; saving as .docx takes about six minutes as opposed to 45, and a save of that document back to .doc form is still running after over 30 minutes.
The way I'm working the tables means that anything over 2,000 rows slows down but I think I have the measure of that. Calculating the number of rows and formating the table in advance cut the run time from several hours to 45 minutes when I tried it (with much less data than at the moment).
This won't just help this project, it will make a big difference to storage needs across the organisation. Thanks, everyone!

Author Closing Comment

ID: 39991012
Thanks for going the extra distance with some great suggestions, and in particular giving the reasoning behind them.

Featured Post

Gigs: Get Your Project Delivered by an Expert

Select from freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely and get projects done right.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Problem to open text file 11 107
Message not shown 5 49
Problem to refer to value 8 45
Don't Convert Time to Time-of-Day in Mail Merge 2 23
Introduction This tutorial provides instructions on how to properly format your Word document using the inbuilt tools provided. The benefits of using these tools means your documents are more accessible and easily portable to other applications an…
I would like to show you some basics you can do with Mailings in MS Word. It´s quite handy feature you can use for creating envelopes, labels, personalized letters etc. First question could be what is this feature good for? Mailing can really he…
This video teaches viewers about errors in exception handling.
The viewer will learn how to user default arguments when defining functions. This method of defining functions will be contrasted with the non-default-argument of defining functions.

785 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