为什么在使用Worksheets.Visible时会得到HRESULT 0x800A03EC?

时间:2012-09-11 14:01:17

标签: vb.net excel excel-interop worksheet

我一直试图找出方法来区分加载工作表的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错误。 In code Error shows up in Worksheets properties

当我尝试获取Visible属性时出现相同的错误,即使工作表可见(在我BindToMoniker()的情况下,当前在excel中打开的文件...)

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

1 个答案:

答案 0 :(得分:0)

没有保证,但我会说workheets.visible - >因为工作表会为您提供工作表列表,因此无法使用。

你不能申请.visible - >你必须使用工作表(1).visible

此外,如果没有任何工作表,这应该会失败。你必须先检查你的工作表数量。

另一件事 - 我不知道这是否可以在vb.net下使用interop,但也许您可以通过其内部代号访问特定的工作表 - 如下所示:

pobjExcel.table1.visible