BindToMoniker获取两个Windows然后Windows(wb.Name).Visible失败

时间:2016-12-05 04:45:34

标签: vb.net excel-vba vba excel

我试图使用BindToMoniker获取Excel文件。对于这个问题,我从没有运行的Excel实例开始(没有打开工作簿)。它打开一个Excel实例,显示两个Excel窗口。一个标题为Excel,另一个标题为我的工作簿名称。它们都没有显示任何打开的工作簿。

在Excel 2016中使用Windows 10 64位。

Dim wb As Excel.Workbook = System.Runtime.InteropServices.Marshal.BindToMoniker(PathName)

Dim xlApp As Object = wb.Parent
xlApp.Visible = True

'error here
xlApp.Windows(wb.Name).Visible = True

我应该可以使用xlApp.Windows(wb.Name).Visible = True取消隐藏窗口而不是COMException: Invalid index. (Exception from HRESULT: 0x8002000B (DISP_E_BADINDEX))只是为了验证我是否点击了任一窗口,然后在“视图”标签中单击“取消隐藏”。它显示了确切的wb.name。我点击确定取消隐藏,它就可以了,第二个窗口消失了。然而,如果我尝试在代码中执行此操作,则会抛出错误。那么为什么我的代码会抛出错误和/或我该如何修复呢?

编辑: 这也会引发错误"无效索引"

xlApp.Windows(1).Visible = True

编辑2:

这有效

  1. 我在xlApp.Windows(1).Visible = True
  2. 处破解了代码
  3. 点击标题为wb.name
  4. 的Excel窗口
  5. 执行第xlApp.Windows(1).Visible = True
  6. 我的工作簿是隐藏的,一切都很顺利。但是,如果我点击另一个名为" Excel"然后它没有找到任何窗口,我的工作簿保持隐藏状态。我不明白它为什么打开两扇窗户。这似乎是一个问题。

    我尝试重新启动计算机;没有变化。

    那么为什么我会得到两个窗口,为什么它找不到隐藏的工作簿来取消隐藏呢?解决方案是什么?

0 个答案:

没有答案