使用access vba打开时,不需要的excel保存提示

时间:2013-12-16 18:18:24

标签: excel vba access-vba

我有一个访问VBA程序,它打开一个excel文件以便检索一些数据。

Private Function getSampleDescription() As Boolean
' Assign the Excel Object
If gfcHandleErrors Then On Error GoTo errorExit:

getSampleDescription = True
Dim excelapp As Object
Set excelapp = CreateObject("excel.application")

' Assign the workbook
Dim wb As Object
Set wb = excelapp.Workbooks.Open(fileName:=fileName, ReadOnly:=True, Password:=sampleFilePassword)

'Assign the sheet
Dim sh As Object
Set sh = wb.worksheets("Sample Description")

它一直工作正常,但最近(不知道为什么),我得到一个excel提示要求保存,不保存或取消。
Excel Save Prompt

这在Workbooks.Open语句之后立即发生。如果我选择保存,我会得到一个提示,将excel表保存到ExcelFilename的副本。保存代码后,继续正常进行。如果我选择不保存代码只是正常进行。如果我选择取消,则会再次出现提示;选择取消第二次中止代码。

知道是什么引起了这个吗?它可以是我的工作簿或工作表上的密码保护。我怎么能让它停下来!

在Windows 7上运行的Access和Excel 2010版本。

感谢您的帮助......

2 个答案:

答案 0 :(得分:0)

只需将以下内容添加到VBA代码的最顶层即可。

Application.DisplayAlerts = False

这实际上会阻止任何警报窗口弹出并破坏您的代码。请注意:如果您不想在从中检索数据后保存excel文件,我认为这应该可以正常工作。

答案 1 :(得分:0)

我知道这个问题是3年前提出来的,但似乎没有补充答案。 Excel提示保存文档,因为您的代码执行打开的过程并将文件重新评估为只读,这实际上是文档本身的更改,因此需要保存过程。

Application.DisplayAlerts = False
ChangeFileAccess XlFileAccess.xlReadOnly
Application.DisplayAlerts = True

如前所述,上述代码将禁止显示提示框,但不要忘记在执行特定代码后将其恢复为True,因为可以防止显示其他错误。