2013-10-01 67 views
1

我在寫一個遞歸遍歷的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包含正確的值,這是正在從接入表中檢索。該代碼作爲循環的一部分執行。我認爲這個問題與當前的工作手冊有關,但我不確定。任何幫助將不勝感激。

+0

不能相信我是如此盲目,所有我需要做的是改變: ActiveWorkbook.SaveAs文件名: = saveString,的FileFormat:= xlTemplate ActiveWorkbook.Close 要: xlApp.ActiveWorkbook.SaveAs文件名:= saveString,的FileFormat:= xlTemplate xlApp.ActiveWorkbook.Close – Finklesteinn

+1

爲什麼打開的Excel的新實例,如果你已經有了Ø NE? –

回答

0

我從評論中看到,您注意到您必須將Activeworkbook作爲Excel應用程序對象的屬性。

不過,我想建議你考慮一個With塊做...

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

好主意,會做。乾杯 – Finklesteinn