递归保存 - 抛出错误

时间:2013-10-01 00:01:19

标签: excel vba ms-access excel-vba access-vba

我正在编写一个VBA脚本,递归地通过并从目录中获取所有单词和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包含正确的值,该值是从访问表中检索的。代码作为循环的一部分执行。我认为问题与当前的工作簿有关,但我不确定。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

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

但我建议您考虑在With区块中进行此操作...

With xlApp
    .DisplayAlerts = False
    .Visible = True
    .Workbooks.Open strFile
    .ActiveWorkbook.SaveAs FileName:=saveString, _
        FileFormat:=xlTemplate
    .ActiveWorkbook.Close
    .Quit
End With