I suspect timing. There is as you know a lot going on under the
hood. My personal experience with "intermittent" errors is to shout
Timing!!!
It may of course be a knee jerk... :-)
Try putting som DoEvent statements in your code so that some processes
definately finish before others start.
In multi thread environments it's normal to check and see if a
particular thread has finished before continuing. Maybe you meed to
incorparate something like that.
Are you using a "fast" computer? Does the code run ok on a slower
computer?.. ie an older one :-)
Windows typically uses write after caching.. Is the cache getting
written away before a different procedure needs the data?