Tag: vsto

Excel加载项function区单击事件冒泡

我正在遵循MSDN上的演练: 使用function区devise器创build自定义选项卡 看第3步和第4步: 在第3步中,它将一个事件处理函数添加到ribbon_Load函数中,基本上将一个单击事件添加到function区中的button: private void MyRibbon_Load(object sender, RibbonUIEventArgs e) { this.button1.Click += new RibbonControlEventHandler(this.button1_Click); } 然后,在步骤4中,以我更习惯的方式添加另一个事件处理程序,如下所示: private void button1_Click(object sender, RibbonControlEventArgs e) { MergeReportInterface ui = new MergeReportInterface(); ui.ShowDialog(); } 我并不真正理解这个目的,因为它所做的只是导致事件发生两次。 如果我注释掉添加到load函数的事件处理程序,事件就会发生一次。 请问有人可以向我解释这是什么意思? 如果有的话,或者如果MSDN网站上有一些错误。 应该怎样处理一个丝带点击事件?

VSTO Excel.DropDown事件

我使用C#VSTOdynamic添加ActiveSheet单元格中的Excel.DropDown。 有没有一种方法来处理更改select事件,而无需将macrosembedded工作簿? 或者我会有兴趣使用Excel的数据validation技术(cell.Validation),大概我需要使用SheetChange事件。 不确定哪一个更有效率? 我正在使用的代码是波纹pipe var currentSheet = Application.Sheets[strDestSheetName]; var inv = Application.Sheets[strSrcSheetName]; var items = inv.Range[strSrcRange]; var list_items = new List<string>(); foreach (Excel.Range cell in items) { list_items.Add(cell.Value2.ToString()); } Range xlsRange; xlsRange = currentSheet.Range[strDestCell]; Excel.DropDowns xlDropDowns; Excel.DropDown xlDropDown; xlDropDowns = ((Excel.DropDowns)(currentSheet.DropDowns(Missing.Value))); xlDropDown = xlDropDowns.Add((double)xlsRange.Left, (double)xlsRange.Top, (double)xlsRange.Width, (double)xlsRange.Height, true); //Add item into drop down list […]

在VSTO Addin for Excel中如何处理活动工作表中的button单击事件?

目前我正在开发一个使用VB.NET 2010和VSTO的Excel 2010插件。 活动工作表有一个button,其单击事件将由其自己的VBA代码处理。 现在我想在Addin中处理相同的button单击事件,而不影响其原始的VBAfunction。 可能吗? 我怎样才能做到这一点? 这个任务的前提是在Excel模板(包括VBA代码)上不允许修改任何内容。 这就是为什么我尝试从VB.NET的事件处理。 触发点在于Excel模板中的button被点击了,那么肯定会引发一定的事件,这个事件肯定会被VBAmacros处理,但是我想在VB.Net中增加另一个监听器(事件处理程序)同样的事件,所以我可以做一些额外的任务。 有没有人知道如何添加这样的事件处理程序? 谢谢。

在Excel中禁用快捷方式的替代方法

在Excel 2007-2013中,我使用了Application.OnKey来禁用快捷方式 Application.OnKey("{F5}", "") 但在Excel 2016中会引发Excel崩溃(稍后爆炸,然后按F5)。 我想这是在新的Excel中的一些错误,也许有一天它将被修复,但现在我需要一个解决方法,另一种方法来禁用快捷方式。 有什么build议么?

获取该区域所属的工作表

在VSTO中,在开发一个excel插件时,我有一个excel区域名称,是否有可能得到它所属的工作表? 是否也可以获取单元格所属的工作表?

Excel VSTO工作表唯一标识符

我正在寻找一种方法来创build唯一的Worsksheet标识符,这将至less考虑名称和内容。 如果任何工作表值被改变,那么标识符也会改变。 我已经检查了GetHashCode(),但由于某种原因每次我调用这个方法在它总是改变的同一张纸上。 任何想法如何创build标识符/哈希码 Excel.Worksheet sheet2 = (Excel.Worksheet)Globals.ThisAddIn.Application.ActiveSheet; var hash = sheet2.GetHashCode();

使VSTO Excel 2016工作簿应用程序便携/无需安装?

我有以下情况: 我开发了一个VSTO Excel 2016工作簿,当您在上述工作簿中复制/粘贴Excel工作表时,会触发一些代码。 当我发布项目(项目属性>发布>立即发布)时,Visual Studio在文件夹中创build以下内容: Excel工作簿(.xlsx) VSTO文件(.vsto) setup.exe文件 工作簿只打开时没有错误,当我第一次运行安装程序,很明显安装.vsto文件。 我的问题: 你可以生成/发布一个可移植的.xlsx工作簿,即你不必安装任何东西,因为代码已经在.xlsx文件中了。 因为我不想每次运行setup.exe时切换到另一台电脑。 还是有甚至VSTO /我的问题的替代解决scheme?

Excel VSTO AddIn – 从select中获取图表对象

我将如何将用户的select转换为VSTO Excel加载项中的图表对象(如Excel.Chart )。 我一直在尝试使用这样的东西(同时在Excel中select一个图表对象): Dim chart as Excel.Chart = CType(Globals.ThisAddIn.Application.Selection, Excel.Chart) 但是,这会引发InvalidCastException 。 我似乎无法find任何有关如何让用户select图表,然后在VSTO加载项中修改所选图表的文档。

在Excel VSTO文档级自定义中,如何将“Globals.Sheetn”传递给参数以指定Excel.Worksheet接口?

当我在工作表的部分类文件(例如Sheet8)中编写代码时,如何将“this”类作为期望具有Microsoft.Office.Interop.Excel.Worksheet接口的对象的parameter passing? 下面是一个来自Sheet8.cs文件的例子: public partial class Sheet8 { private void Sheet8_startup(object sender, System.EventArgs e) { var object = new MyCustomClass(this); } } 而我想写的消费代码: class MyCustomClass { public MyCustomClass(Microsoft.Office.Interop.Excel.Worksheet sheet) { // Do something with the sheet } } 问题似乎是“this”总是引用Sheet n对象,并且不能转换为使用自定义代码创build松散耦合接口所必需的接口types。 有什么build议么?

VSTO和.XLL之间的通信

在Visual Studio中,我有一个解决scheme。 在这个解决scheme中,我有2个项目。 一个是VSTO,所以我们可以为Excel创build一个插件。 另一个项目是用来创build一个.xll文件,以便我们可以有自定义函数。 VSTO帮助我们在excel上创build一个login系统,以便他们可以做某些事情。 但是,因为我们只希望我们的用户能够使用我们的自定义函数,他们必须login。我认为这两个项目不能直接通信,所以.xll插件不会知道用户是否login。 这两个项目有没有交stream? 也许通过一个像静态variables类的中间人? 编辑: 更多信息: 这两个项目都是用C#代码编写的。 我可以通过使用ExcelDNA为.xll文件做到这一点。 因此,如果有什么办法可以创build一个C#类,它可以在两个项目之间协调或共享数据,这将非常棒。 由于login数据不是我们想分享的唯一东西。 我希望在类中将有一个静态布尔variables保持用户是否login。所以VSTO可以设置布尔值和.xll可以得到它。