0

我一直在试图找出方法来区分加载工作表的excel实例和不加载工作表的excel实例之间的区别

目前我使用代码打开看起来像这样的现有文件:

Dim wkbWorkBook as Excel.Workbook
Dim objExcel As Excel.Application

wkbWorkBook = System.Runtime.InteropServices.Marshal.BindToMoniker(filename) 
objExcel = wkbWorkBook.Parent

'To make the excel app visible while working with it: 
objExcel.Visible  = true

我在使用此代码时注意到的是,如果我打开一个存在但未在 excel 中打开的文件,当我使 Excel 应用程序可见时,工作表不可见,但它们确实存在(我可以访问worksheets.count 并且有适当数量的工作表)

我尝试使用 Worksheets.Visible 但我注意到它只有在“可见”值所在的地方有一个 HRESULT 错误。 在代码中错误显示在工作表属性中

即使工作表可见,当我尝试获取 Visible 属性时也会发生相同的错误(如果我 BindToMoniker() 是当前在 excel 中打开的文件..)

我的部分问题是为什么 BindToMoniker() + Application = workbook.Parent 总是给我一个没有加载任何工作表的 Excel 应用程序。当它像这样时我无法使用它。

4

1 回答 1

0

没有保证,但我会说 worksheets.visible -> 不起作用,因为工作表为您提供了工作表列表。

您不能在其上应用 .visible -> 您必须使用 worksheets(1).visible

此外,如果没有任何工作表,这无论如何都会失败。您必须先检查工作表的数量。

另一件事 - 我不知道这是否可以在 vb.net 下使用互操作,但也许你可以通过它们的内部代号访问特定的工作表 - 像这样:

pobjExcel.table1.visible
于 2012-09-11T14:34:06.610 回答