在c#中获取当前工作簿对象
本文关键字:工作簿 对象 获取 | 更新日期: 2023-09-27 18:12:29
我一直在用c#编写一个应用程序,该应用程序在Excel电子表格中创建自定义文档属性,我有一个函数用于此,该函数采用工作簿对象…
然而,实际获得当前工作簿对象被证明是相当烦人的,我使用ExcelDNA来添加功能,然而,我似乎不能传递我的函数一个有效的工作簿COM对象。
如果您需要查找activeworkbook与C#
,如果您正在使用Office互操作,您可以尝试这种代码:
(Workbook)Globals.ThisAddIn.Application.ActiveWorkbook;
[源]我现在就是这么做的,看起来效果还不错
using Excel = Microsoft.Office.Interop.Excel;
然后得到活动工作簿
//Gets Excel and gets Activeworkbook and worksheet
Excel.Application oXL;
Excel.Workbook oWB;
Excel.Worksheet oSheet;
oXL = (Excel.Application)Marshal.GetActiveObject("Excel.Application");
oXL.Visible = true;
oWB = (Excel.Workbook)oXL.ActiveWorkbook;
docProps = oWB.CustomDocumentProperties
那我就试试你的方法,看看效果如何
希望能有所帮助
正如@ gov在上面的评论中解释的那样:
using Excel = Microsoft.Office.Interop.Excel;
using ExcelDna.Integration;
// Get the correct application instance
Excel.Application xlapp = (Excel.Application)ExcelDnaUtil.Application;
// Get active workbook
Excel.Workbook wbook = xlapp.ActiveWorkbook;
GetActiveObject()查看运行对象表(ROT),并给出最后一个打开的Excel实例,该实例可能与顶级Z顺序Excel窗口不对应。
通过Z顺序循环查找匹配的工作簿。
请看这个链接:-https://social.msdn.microsoft.com/forums/office/en - us/060000d8 a899 - 49 - bf - a965 - 0576 dee958d4/how - -获得活跃application?forum=exceldev