1

我正在编写一个 VBA 脚本,它递归地遍历并从目录中获取所有 word 和 excel 文件,然后打开并将它们保存为模板,然后关闭。一切正常,但是当我尝试关闭打开的 excel 应用程序时,出现错误“运行时错误'91':对象变量或未设置块”

代码如下:

If ExtFind = "xlsx" Or ExtFind = "xls" Then
Debug.Print ("EXCEL FILE FOUND")
Dim xlApp As Excel.Application
Set xlApp = CreateObject("Excel.Application")
xlApp.DisplayAlerts = False
xlApp.Visible = True
xlApp.Workbooks.Open strFile
ActiveWorkbook.SaveAs FileName:=saveString, FileFormat:=xlTemplate
ActiveWorkbook.Close
xlApp.Quit

Set xlApp = Nothing
End If

错误发生在该行:

ActiveWorkbook.SaveAs FileName:=saveString, FileFormat:=xlTemplate

我 100% 确定变量 saveString 包含正确的值,该值是从访问表中检索的。代码作为循环的一部分执行。我认为问题与当前的工作簿有关,但我不确定。任何帮助将不胜感激。

4

1 回答 1

0

我从您注意到您必须Activeworkbook作为 Excel 应用程序对象的属性引用的评论中看到。

但是,我想建议您考虑分With块进行...

With xlApp
    .DisplayAlerts = False
    .Visible = True
    .Workbooks.Open strFile
    .ActiveWorkbook.SaveAs FileName:=saveString, _
        FileFormat:=xlTemplate
    .ActiveWorkbook.Close
    .Quit
End With
于 2013-10-01T00:19:22.100 回答