Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用access vba打开时不需要的excel保存提示_Excel_Ms Access_Vba - Fatal编程技术网

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

使用access vba打开时不需要的excel保存提示,excel,ms-access,vba,Excel,Ms Access,Vba,我有一个access 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

我有一个access 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提示,询问保存、不保存或取消。

这在工作簿.Open语句之后立即发生。如果选择“保存”,则会提示将excel表保存到excel文件名的副本。一旦我保存了代码,就可以正常运行了。如果我选择不保存,代码将正常运行。如果选择“取消”,则会再次出现提示;再次选择“取消”将中止代码

你知道这是什么引起的吗?可能是我的工作簿或工作表上的密码保护。我怎样才能让它停止

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


谢谢你的帮助

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

Application.DisplayAlerts = False

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

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

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

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

工作簿是否有打开时触发的宏?您可以在打开工作簿之前尝试添加excelapp.DisplayAlerts=False。excel工作表中是否有任何试图保存工作簿的代码?Tim-否,打开工作簿时会触发宏,但没有宏。EngineersMnky-无保存代码Tim-DisplayAlerts=False似乎已解决问题。谢谢,我刚刚尝试使用问题中的代码以只读模式打开工作簿,但它没有决定我希望以只读模式打开工作簿意味着需要保存它,这将完全无法以只读方式打开工作簿。该代码仅阻止出现框,我将编辑该框以显示我使用的完整代码。在执行脚本之前,您需要先启用内容。ChangeFileAccess只需将文件更改为只读模式,而不需要保存工作簿即可。它没有将文件设置为只读,只是将在内存中打开的版本更改为只读模式,以便无法保存更改。代码的计算结果如下:open file read Write,ChangeFileAccessRead only如果要以只读方式手动打开文件,则代码为空,如您所说。但正如上面用户所说,他从Access运行excel文件,这是完全不同的。我也尝试了Access的代码-excel继续以[只读]模式打开文件,因为open语句中的ReadOnly:=True参数,并且不需要在文件打开后立即保存。