代码之家  ›  专栏  ›  技术社区  ›  Michael

通过vb6以只读方式打开Excel工作簿

  •  3
  • Michael  · 技术社区  · 15 年前

    我有一个用vb6编写的应用程序,它将数据写入电子表格。我正在使用MS Excel 11.0对象库创建Excel实例并打开书籍:

    Dim xlApp As Excel.Application, remoteBook As Workbook
    Set xlApp = New Excel.Application
    Set remoteBook = xlApp.Workbooks.Open(sheetName)
    

    除了写入工作簿“sheetname”,该程序还允许用户启动工作簿以查看累积结果。

    有一个机会,不管它可能是多么渺小,用户可以打开工作簿查看结果,而其他人正在试图写入它。我想给用户写工作表的优先权。是否可以启动工作表以只读方式查看?Excel应用程序对象有一个只读属性,但它(当然)是只读的。

    即使有人不小心把文件放在桌上打开了,我该如何设置我的程序将数据写入工作簿?

    3 回复  |  直到 15 年前
        1
  •  5
  •   Keith Adler    15 年前

    简单地做到这一点:

    Set remoteBook = xlApp.Workbooks.Open( sheetName, , true)
    

    其中true是是否以只读方式打开。readonly是此方法的第三个参数。

        2
  •  0
  •   Hans Olsson    15 年前

    我想你可以通过 Workbook.ChangeFileAccess 所述方法 here . 但不确定是否适合你的情况。

        3
  •  0
  •   ray    15 年前

    让我确保我已经正确地解释了您的问题:

    1. 您的应用程序写入Excel文件
    2. 应用程序在Excel中启动文件 给用户

    这就是我 认为 你是说: 一旦用户查看了工作表,他们可能希望也可能不希望编辑该工作表。
    换句话说,你不想使用

    Set remoteBook = xlApp.Workbooks.Open( sheetName, , true)
    

    100%的时间,因为用户查看可能想要更改数据。

    缺点是,这个卑鄙的用户可能会让文件保持打开状态,以防止其他用户写入该文件。

    对吗?

    如果是这样,听起来您可能需要在应用程序中显式的状态来“打开以供查看”或“打开以供只读”访问,然后适当地切换只读属性;这可能是不可取的。

    但是,一旦其他人打开了Office文档,就不能强制保存该文档。