2012-08-09 177 views
1

我在Access 2010中有一些VBA運行查詢並將結果導出到Excel中的列。這裏的目標是,當用戶按下所需的按鈕時,將打開一個excel工作簿,如果它不存在,則會創建它。在創建新工作簿時,VBA預成型坯如預期的那樣。我遇到的問題是工作簿已經存在。Access 2010 Excel導出1004錯誤

因此,我創建一個集我的Excel應用程序對象,我試圖打開工作簿。當它不存在發生錯誤1004,我有以下錯誤處理程序:

Select Case Err 
    Case 1004 'Workbook doesn't exist, make it 
    xl.Workbooks.Add 
    Set wb = xl.ActiveWorkbook 
    wb.SaveAs strWorkBook 

    Resume Next 

當用戶打開現有工作簿提示他們與覆蓋是,否,取消選擇。除yes以外的任何其他響應都會生成1004錯誤(看起來有兩個不同的錯誤,具有相同的代碼#)。我只是想找一個方法來解決這個問題,無論是我寫一些VBA來自動接受還是我有其他的東西讓用戶說不/取消。最簡單的是首選,我只是不想讓他們出現錯誤。

+0

想到我可能在SaveAs conflictResolution中找到了解決方案,但沒有找到骰子 – HelloWorld 2012-08-09 16:43:38

回答

1

您不需要依靠錯誤處理來處理Excel文件是否存在。使用Dir()來檢查它是否存在,並相應地打開或創建。

If Len(Dir(strFullPathToWorkbook)) > 0 Then 
    ' open the workbook ' 
Else 
    ' create the workbook ' 
End If 

如果這是一個新的工作簿,請使用wb.SaveAs strWorkBook。如果它是現有的工作簿,則使用wb.Save

+0

這太好了,但我仍然遇到與SaveAs – HelloWorld 2012-08-09 17:00:57

+0

有關的問題如果工作簿是新的,則只能使用SaveAs。保存現有的。 – HansUp 2012-08-09 17:01:50

+0

現在,出於某種原因,當我去打開現有的工作簿它散發出一個1004的錯誤說,它不能被發現 – HelloWorld 2012-08-09 17:10:32