【发布时间】:2017-03-09 20:35:17
【问题描述】:
excel object returns count zero请参考截图。
我需要访问通过类似于 sharepoint 的应用程序打开的文件类型 PPT、Excel、Word 的对象。
当我尝试获取打开的 excel 文件的计数时,我总是得到计数为 0。我已经搜索过是否可以得到帮助,看到了这个 Accessing an open Excel Workbook in C#,但虽然实施了解决方案,但它返回 0。
Microsoft.Office.Interop.Excel.Application xlObj =
(Microsoft.Office.Interop.Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");
while (xlObj.Windows.Count == 0) // This line returns the count as 0
【问题讨论】:
-
"通过类似于 sharepoint 的应用程序打开" > 文件是在 Web 浏览器中打开/查看的,还是正在下载然后在 Microsoft Office 应用程序中打开的文件?
-
文件已下载并在ms office中打开。
-
任何想法为什么会发生这种情况?它适用于 Ppt 和 word 对象。另外一个观察,如果我想专注于 word 和 ppt 应用程序,我可以使用 wordObj.Activate() 和 pptObj.Activate() 为什么我不能为 excel 做? xlObj.Activate() 不可用
-
Activate()方法仅适用于 Excel 中的工作簿,而不适用于整个应用程序。您是否尝试过检查是否有任何打开的工作簿而不是检查窗口计数(即检查xlObj.Workbooks.Count)?如果计数大于 0,那么您应该能够通过调用xlObj.Workbooks[1].Activate()来激活第一个工作簿 -
感谢低音推子。我重新启动系统excel计数现在工作正常。不知道是什么问题。我已经释放了 COM 对象,处理了 GC,无论如何,当它不工作时我的运气不好。关于激活 excel 文件,xlObj.Workbooks[1].Activate() 工作正常。非常感谢。