2012-08-09 179 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