获取C#中的当前工作簿对象
我一直在用C#编写一个应用程序,它在Excel电子表格中创build自定义文档属性,我有一个函数用于接收工作簿对象…
但是,实际上得到当前的工作簿对象被certificate是相当恼人的,我使用ExcelDNA来添加function,但是,我似乎无法通过我的函数有效的工作簿COM对象。
这是我目前的做法,似乎工作得很好
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
然后,我会尝试你有什么,看看它是如何工作的
希望这可以帮助
如果您需要使用C#
查找activeworkbook,如果您使用的是Office Interop,则可以尝试这种types的代码:
(Workbook)Globals.ThisAddIn.Application.ActiveWorkbook;
[ 来源 ]
正如@Govert在他的评论中所解释的那样:
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顺序循环查找匹配的工作簿。