【问题标题】:Unwanted excel save prompt when opening with access vba使用访问 vba 打开时不需要的 excel 保存提示
【发布时间】:2013-12-16 18:18:24
【问题描述】:

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

这发生在 Workbooks.Open 语句之后。如果我选择保存,我会收到将 Excel 表保存到 ExcelFilename 的副本的提示。一旦我保存代码然后正常进行。如果我选择不保存代码,则正常进行。如果我选择取消,提示会再次出现;再次选择“取消”会中止代码。

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

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

感谢您的帮助...

【问题讨论】:

  • 工作簿是否有在打开时触发的宏?您可以尝试在打开工作簿之前添加excelapp.DisplayAlerts = False
  • excel 表中是否有任何代码试图保存工作簿?
  • Tim - 不,有宏,但没有通过打开工作簿触发。
  • EngineersMnky - 没有保存代码
  • Tim - DisplayAlerts = false 似乎已经解决了这个问题。谢谢

标签: excel ms-access vba


【解决方案1】:

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

Application.DisplayAlerts = False

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 我只是尝试以只读模式打开工作簿(使用问题中的代码),但它并没有决定我希望以只读方式打开它意味着它需要保存它(无论如何都会完全破坏以只读方式打开它的目的)。
    • 该代码只会阻止该框出现,我将对其进行编辑以显示我使用的完整代码。在执行脚本之前,您需要先启用内容。
    • ChangeFileAccess 只是将文件更改为只读模式 - 它不需要保存工作簿即可执行此操作。 (不是将文件设置为只读,只是将内存中打开的版本更改为只读模式,这样更改就无法保存了。)
    • 代码计算如下,打开文件(读写),更改文件访问(只读)如果您以只读方式手动打开文件,则代码如您所说无效。但正如上面的用户所说,他从 Access 运行 excel 文件,这是完全不同的。
    • 我也尝试过 Access 中的代码 - Excel 继续以[Read-only] 模式打开文件(由于Open 语句中的ReadOnly:=True 参数),并且不需要文件一打开就保存。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-04
    • 2018-06-02
    • 2015-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多