Improve company productivity with a Business Account.Sign Up

  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 945
  • Last Modified:

Word Document with many tables takes a long time to save

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?
2 Solutions
Raheman M. AbdulSenior Infrastructure Support Analyst & Systems DeveloperCommented:
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.
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?
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.
What Kind of Coding Program is Right for You?

There are many ways to learn to code these days. From coding bootcamps like Flatiron School to online courses to totally free beginner resources. The best way to learn to code depends on many factors, but the most important one is you. See what course is best for you.

MikeDigginsAuthor Commented:
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.
* 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)
MikeDigginsAuthor Commented:
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!
MikeDigginsAuthor Commented:
Thanks for going the extra distance with some great suggestions, and in particular giving the reasoning behind them.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now