【问题标题】:Excel Automation - how to just say NoExcel 自动化 - 如何说不
【发布时间】:2012-11-08 13:50:05
【问题描述】:

我正在开发一个 vb.net 控制台应用程序,该应用程序一个接一个地打开许多电子表格,读取几个单元格并关闭文件。

当我打开文件时,某些电子表格具有 Excel 会重新计算的公式,当我关闭它时,我收到一个对话框,询问我是否要保存对电子表格的更改。

消息:“您要保存对 myfile.xls 的更改吗?Microsoft Office Excel 会在打开上次由早期版本的 Excel 保存的文件时重新计算公式”

如何自动拒绝该对话框?

            Dim newCBD As New CBD
            Dim xlApp As Excel.Application
            Dim xlWorkBook As Excel.Workbook
            Dim xlWorkSheet As Excel.Worksheet

            xlApp = New Excel.ApplicationClass
            xlWorkBook = xlApp.Workbooks.Open(myFile)
            xlWorkSheet = xlWorkBook.Worksheets(1)

            ...do a bunch of junk here

            xlWorkBook.Close()
            xlApp.Quit()

谢谢!

【问题讨论】:

  • 这里添加信息,如果程序版本比文件版本新,Excel会自动重新计算公式。

标签: vb.net excel automation interop excel-interop


【解决方案1】:

您需要在 Close 方法上提供一个 False 参数

xlWorkBook.Close(False)

来自 Excel VBA 帮助:

关闭方法,因为它适用于 工作簿对象。

关闭对象。

表达式.Close(SaveChanges, 文件名,RouteWorkbook)

表达式 必需。一种表达 返回上述对象之一。

SaveChanges 可选变体。如果 工作簿没有变化, 这个论点被忽略。如果有 修改工作簿和 工作簿出现在其他打开 windows,此参数被忽略。如果 工作簿有更改,但 工作簿没有出现在任何 其他打开的窗口,这个参数 指定是否应进行更改 保存,如下图 表。

值操作 True 保存更改 到工作簿。如果还没有 关联的文件名 工作簿,然后使用 FileName。如果 FileName 被省略,询问用户 提供文件名。假 不 保存对此文件的更改。 省略 显示一个对话框询问 用户是否保存 变化。

FileName 可选变体。节省 此文件名下的更改。

RouteWorkbook 可选变体。如果 不需要路由工作簿 到下一个收件人(如果它没有 路由单或已经 路由),此参数将被忽略。 否则,Microsoft Excel 会路由 工作簿如下所示 表。

值 含义 True 发送工作簿 给下一个收件人。假的不 发送工作簿。省略显示 对话框询问用户是否 应该发送工作簿。

【讨论】:

    【解决方案2】:

    根据本文档:http://msdn.microsoft.com/en-us/library/bb223560.aspx

    如果您将工作簿的 Saved 属性设置为 True 而不将工作簿保存到磁盘,Microsoft Excel 将退出而不要求您保存工作簿。

    【讨论】:

      【解决方案3】:

      最好使用Close() 来避免出现此错误消息,但如果您使用的是v11.0 之类的版本,其中close() 不带任何参数,因此问题仍然无法解决这种情况。要处理这个问题,您可以使用Marshal.RealeaseCOMObject,但请记住有一些issues

      针对您的“如何只说不”,您可以使用:

      xlApp.DisplayAlerts= false;  // use just above the Close() method calls
      xlApp.Workbooks.Close(); // here no arguments can be used.
      

      希望对你有帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-16
        • 1970-01-01
        相关资源
        最近更新 更多