Suppress“;“保存更改”;通过Excel automation创建文档时
在我正在开发的业务线应用程序中,我们能够导出到Excel,这是通过Excel自动化实现的。我们有两种导出方法-一种是保存文件,然后将其附加到Outlook电子邮件(再次通过自动化);另一种是有效的“预览”,它执行到Excel的导出,但在最后使应用程序可见,而不是保存/发送电子邮件 报告的问题之一是,当他们预览、不做任何更改并尝试关闭Excel时,系统会提示标准的“是否要保存更改”。他们的意见是,因为他们没有做任何更改,所以不应该显示此消息Suppress“;“保存更改”;通过Excel automation创建文档时,excel,automation,Excel,Automation,在我正在开发的业务线应用程序中,我们能够导出到Excel,这是通过Excel自动化实现的。我们有两种导出方法-一种是保存文件,然后将其附加到Outlook电子邮件(再次通过自动化);另一种是有效的“预览”,它执行到Excel的导出,但在最后使应用程序可见,而不是保存/发送电子邮件 报告的问题之一是,当他们预览、不做任何更改并尝试关闭Excel时,系统会提示标准的“是否要保存更改”。他们的意见是,因为他们没有做任何更改,所以不应该显示此消息 除了强制保存到一个我们必须在“以后某个时间点”手动清除的
除了强制保存到一个我们必须在“以后某个时间点”手动清除的位置之外,是否有任何方法可以抑制此消息?关于
objWorkbook.Close false
此参数“false”负责保存更改
这能解决问题吗
或者,如果您想随时强制工作簿保存,请改为“true”。以下方法对我很有效:
Set XLHandle = CreateObject("Excel.Application")
XLHandle.DisplayAlerts = False
XLHandle.Visible = True
Set XLBook = XLHandle.WorkBooks.Open("c:\temp\1.xls")
'This is where your user reviews the book and manually closes it.
'If you want to test out this code set a breakpoint at the next line, manually close Excel workbook then proceed with the execution.
'In your App you would need to implement certain synchronization with user actions instead of setting a breakpoint.
XLHandle.Quit
Set XLBook = Nothing
Set XLHandle = Nothing
这样可以抑制所有弹出窗口。您可以随时访问DisplayAlerts属性,而不仅仅是在创建自动化对象之后
谢谢,,
阿尔伯特·加雷夫
将
工作簿::Saved
属性设置为true将阻止Excel提示保存更改(只要您不进行任何后续编辑)但是,我们不想调用Close()
,因为这样会使工作簿消失,在他们有机会预览输出之前?这也将关闭工作簿,这是我们不希望发生的事情。我们需要Excel应用程序保持打开状态,直到最终用户关闭,然后才提示保存更改。@Rowland。没问题。我刚刚为您更新了代码示例。Excel似乎只是在早些时候抛出了一个错误,设置工作簿::Saved property属性做了正确的事情(如果删除的答案最初建议恢复,它将被适当地升级并接受:)+1感谢您留下关于答案的注释。请自行添加答案,并将其视为最佳答案:)