|
为了提高效率,遂想到使用VBA开发一套报告自动生成工具。思路很简单,word里贴的都是excel数据链接,从而实现数据的同步。然后又在excel里用VBA写了一个简单的循环语句实现批处理。
批处理的代码如下:
Sub batch_process()
Dim n As Integer
n = 2
folderpath = ThisWorkbook.Path & "/主动作业集合/"
If Len(Dir(folderpath, vbDirectory)) = 0 Then '检查文件夹是否存在,不存在就创建
VBA.MkDir (folderpath)
End If
Set wd = CreateObject("Word.Application")
Do While Sheets("批处理").Cells(n, "B") <> ""
Sheets("项目信息").Range("B3") = Sheets("批处理").Cells(n, "B")
ThisWorkbook.RefreshAll
Application.CalculateUntilAsyncQueriesDone
Call creatReport
ThisWorkbook.SaveCopyAs (folderpath & Sheets("项目信息").Range("B5") & ".xlsm")
n = n + 1
Loop
wd.Quit
Set wd = Nothing
End Sub
Sub creatReport()
Dim t As String
t = Format(Now(), "mmddhhmmss")
Set wddoc = wd.Documents.Open(ThisWorkbook.Path & "/主动评级报告.docx") '创建文档
wd.Visible = True
wddoc.SaveAs folderpath & t & Sheets("项目信息").Range("B5") & ".doc"
wddoc.Close
Set wddoc = Nothing
End Sub
这个batch_process过程可以运行,也能正常生成word报告。
但存在的问题是,因为我的excel里面使用了很多wind金融终端公式,每当我首次打开这个excel并运行这个过程时,生成的word里面的数据会更新失败。
但我把更新失败的文件都删除以后,再次运行这个batch_process,则会成功。
我怀疑过是不是数据刷新的问题,但查了很多资料仍然不能解决这个问题。所以求助各位大佬,到底是什么原因导致?
|
-
首次运行batch_process生成的文件是有问题的
|