You might need to use an ActiveDocument.GetApplication.WaitForIdle between one set and the next get to make sure that one thing finishes before the next thing begins. The down side of this approach is that it will probably take significantly longer to finish the work as it single threads everything, and rebuilds the chart for every property you change. A way around that is to add false() as a calculation condition when you start, then remove it at the end. It'll still probably be slower, but at least it won't be rebuilding the chart over and over. Or I could be completely off base about what might be causing the problem.