奇怪的VBA(错误?) - 复制粘贴循环崩溃,除非添加了Messagebox

时间:2015-12-17 14:53:26

标签: vba loops crash

我的VBA遇到了一个奇怪的问题。我编写了一个应该创建Word报告的子程序。我基本上有例如10个变量,一个带有模板图表的单词模板文档,以及每个变量三个带有数据的CSV文件。我遍历所有变量,对于我创建页面的每个变量,访问chartdata工作簿,并将外部CSV数据复制到chartdata工作簿中。

Sub createRep()

  'open Word-template

  for page=1 to 10

    'Open external csv
    'Open chartdata workbook
    'Copy external data into chartdata workbook
    'Close external csv files and chartdata workbook

  Next page

End Sub

它将在开始时工作,但在某个页面我会收到错误,因为粘贴不起作用。我也无法手动将任何内容复制到chartdata工作簿中,似乎它崩溃了,这就是粘贴失败的原因。但是,以下代码将起作用:

Sub createRep()

  'open Word-template

  for page=1 to 10

    MsgBox page

    'Open external csv
    'Open chartdata workbook
    'Copy external data into chartdata workbook
    'Close external csv files and chartdata workbook

  Next page

End Sub

这就是消息框以某种方式修复它。但为什么呢?

1 个答案:

答案 0 :(得分:0)

这可能是由于您的代码在Word打开之前运行。当文档尝试加载时,您已经在应用程序准备好之前访问它。 如果只是添加DoEvents,或者如果这还不够,请使用对WordApplication的引用来修复此问题:

While WordApplication.Busy = True
      DoEvents
Wend

希望这会有所帮助 -JDB