Tag: vsto

从Application.CommandBars 中删除CommandBarButtons不是从ThisAddIn_Shutdown事件上的所有打开的工作簿中删除它们

我有一个.NET 4.0的C#VSTO应用程序,它在Globals.ThisAddIn.Application.CommandBars [“Cell”]上下文菜单中使用了两个自定义的CommandBarButton。 我在ThisAddIn_Startup事件上创build了一次button,它们对于所有的工作簿都非常有用。 如果在不closuresExcel的情况下closures了我的插件,那么如果有多个打开的工作簿,则会出现问题。 只有活动工作簿的右键单击上下文菜单中的button被删除。 代码: public partial class ThisAddIn { private const string TAG_PASTE_EVENT = "PASTE EVENT"; private const string TAG_COPY_EVENT = "COPY EVENT"; private Office.CommandBarButton copy_event, paste_event; private void ThisAddIn_Startup(object sender, System.EventArgs e) { try { DefineShortcutMenu(); /* * Other start up stuff that works fine */ } catch (Exception ex) { […]

在VSTO插件中确定用户当前是否在使用Excel 2007

我目前正在Windows 7机器上为Excel 2007写一个VSTO插件。 我已经实现了Windows.Forms.NativeWindow和Window HotKey,以便知道用户何时点击某个组合键。 这一切工作正常,只要按下组合键,它是在winProc中检测到。 我的VSTO得到了一个消息,即组合键被按下了,但现在我需要知道用户是否在使用Excel。 我想我想知道如果Excel是在顶部,或者他们在一个单元格中的Excel中的某处。 我认为应用程序对象的ActiveSheet / ActiveWorkbook或ActiveCell对象将帮助,但他们似乎总是东西,即使我在另一个应用程序中工作,并使用组合键。

如何设想Excel是由自动化(VSTO Addin上下文)

我尝试解决以下问题。 语境: 我正在运行一个VSTO Excel应用程序上下文插件,当MS Excel由其他可视化模式下的自动化进程启动时,我也会加载我的插件。 所以,现在需要知道MS Excel是否是由其他进程自动启动的 的CreateObject() ExcelApplicatoin.Visible = true (“/自动化embedded”) 现在,我评估以下Excel属性: ThisAddIn.Application.UserControl 但是,当MS Excel在CreateObject期间启动时,属性也是“False”。 有没有人有任何想法来解决这个问题? 我没有其他物业发现解决这个问题。 提前致谢, Sukram。

获取非连续范围的值数组

我想能够获得工作表上可见单元格的数组值。 但是, Range.Value2属性似乎只适用于连续的单元格。 什么将是一个有效的方法获取可见的单元格值multidimensional array? 也许我们可以在Range.Areas做一些循环? 如果您查看下面的代码示例,您将看到.Value2属性仅返回Range第一个Area的值。 示例输出是(您将看到可见值缺less最后两行): All Values: String1 String2 String3 String4 String5 String6 String7 String8 String9 String10 String11 String12 String13 String14 String15 String16 String17 String18 String19 String20 String21 String22 String23 String24 String25 Visible Values: String1 String2 String3 String4 String6 String7 String8 String9 _ public static void RunTest() { SetData(); HideRowsAndColumns(); Excel.Application excelApp […]

将Word.InlineShape转换为Excel.Workbook c#

在Word文档中有一些excel.workbooks。 我可以得到Word.Inline形状,但我需要将它们转换为Excel.Application Word.InlineShapes shapes=wordApp.ActiveDocument.InlineShapes; 那些形状通过创build wordApp.Selection.InlineShapes.AddOLEObject("MSGraph.Chart.8", excellApp.ActiveWorkbook.Name, false, false, Type.Missing, Type.Missing, Type.Missing, Type.Missing); 我怎样才能将它们再次转换为Excel.Workbook? 我也试过; Word.InlineShapes shapes = wordApp.ActiveDocument.InlineShapes; foreach(Word.Shape shape in shapes) { Word.Chart chart = shape.Chart; } 但它抛出未实现的exception。

通过C#编写的Windows Service的Excel自动化在Office 365安装的计算机上失败

我正在用C#编写Windows服务。 通过这个Windows服务,我以一种编程的方式自动化Excel。 Excel.Application excel = Excel.Application(); 这个代码在所有版本的Excel(2003,2007,2010,2013)都能正常工作。 最近我在我的机器上安装了Office 365。 突然间,当我使用上面的调用自动化Excel时,我得到了exception: 检索具有CLSID {00024500-0000-0000-C000-000000000046}的组件的COM类工厂失败,原因如下:80080005服务器执行失败(HRESULTexception:0x80080005(CO_E_SERVER_EXEC_FAILURE))。 任何人都可以告诉我,通过Windows服务自动化Office 365 Excel时是否需要特别考虑?

Excel VSTO 2010 – 显示select字段的对话框

如何使对话框与标准对话框一样,就像这些对话框一样? 也许在Microsoft Excel库中有一个类?

ListRows.Count返回不一致的结果

我的两个Excel表格驻留在我的项目中的两个不同的工作表上,有一个奇怪的问题。 我正在使用VSTO,但是VBA显示了相同的结果:在另一种情况下,一个空表的行数在一个情况下有1行,我有1行(我假设插入行)。 安装程序 两个工作表:Sheet1,Sheet2 两个对应的命名Excel表:Sheet1Table,Sheet2Table 两个表都是空的,即它们有一个空行,这是插入行,不能被删除。 我运行以下代码来确定数据行的数量(即不包括标题行): Microsoft.Office.Tools.Excel.ListObject sheet1Table = Globals.Sheet1.Sheet1Table; int numberOfListRows1 = sheet1Table.ListRows.Count; 和 Microsoft.Office.Tools.Excel.ListObject sheet2Table = Globals.Sheet2.Sheet2Table; int numberOfListRows2 = sheet2Table.ListRows.Count; 结果是numberOfListRows1是1, numberOfListRows2是0,尽pipe结果(无论哪个是正确的)应该是相同的。 我比较了表格和工作表属性,以及Visual Studio中的源文件,并且我不能发现任何差异。 任何想法我应该寻找(哪个结果是正确的)?

哪一种机制可以让Excel将用户的操作传达给外部?

Excel为开发与之交互的应用程序提供了几个选项 。 但是,似乎所有这些选项都允许从外部控制Excel工作簿。 但是,我想反过来,正是我想“听”用户对Excel工作簿的操作。 例如,侦听器可能是Excel中的一个加载项; 当用户在单元格中input值时,监听器可以捕获此操作,并在屏幕上打印“在单元格XXX中input值XXX”。 有谁知道哪种机制可以实现这一点? 编辑1:感谢@Nathan_Sav和@Rik Sportel的input。 所以如果我理解的很好,他们使用VBA来收听事件并生成消息,几乎所有事件都可以被捕获。 让我详细说明我真正想做的事情。 实际上,我想在Excel之外有一个应用程序(例如用Python或.NET编写),应用程序可以根据用户在工作簿上的操作做一些操作。 如果应用程序必须读取由VBA监听器生成的消息,然后parsing它们,然后做相应的操作,恐怕会很慢。 是否有直接(或内在)的方式让应用程序连接到Excel,并听取用户的操作。

如何部署由office.js创build的Excel AddIn

用VSTO和office.js创buildExcel AddIn,不知道如何部署到其他计算机..对于正常的Excel AddIn创buildVisual Studio安装项目,为此尝试创buildVisual Studio提供的WebSetup项目,但不工作..任何build议是受欢迎的。