我的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
这就是消息框以某种方式修复它。但为什么呢?
答案 0 :(得分:0)
这可能是由于您的代码在Word打开之前运行。当文档尝试加载时,您已经在应用程序准备好之前访问它。
如果只是添加DoEvents
,或者如果这还不够,请使用对WordApplication的引用来修复此问题:
While WordApplication.Busy = True
DoEvents
Wend
希望这会有所帮助 -JDB