Tag: vsto

VSTO的替代品

VSTO有什么替代scheme? 什么是managedxll做VSTO不 – 什么时候你会使用一个vs其他 Google在这个问题上并没有太多的东西 这更多的是面试问题 – 这里有什么优点和缺点,都是问题的关键

在C#vsto Excel中特别粘贴

我正在使用C#vsto Excel应用程序。 每当用户从另一个excel表单中粘贴excel模板中的东西时,它也会将单元格格式与excel模板中的单元格数据一起粘贴。 我想避免这一点。 所以我GOOGLE了,我遇到了术语贴特别。 特殊粘贴只会粘贴内容,不会改变当前表格的格式。 我想在我的vsto应用程序中引入粘贴特殊选项。 我在这里有代码, Application.OnKey("^v", "PasteSpecV"); 但它不工作…任何人可以帮助我呢?

VSTO中的Excel控件

我正在寻找一个与Excel中的用户定义函数控件一样的控件 所以例如当你点击“平均”时,会popup一个控件,让你在文本框中input2个数字。 在文本框的右侧有一个button,单击时允许您在Excel中select一个值的范围,当选中时,填充文本框。 任何人都知道VSTO或任何其他控制这样做,所以我不必自己编码?

有没有一种方法来控制左边的任务窗格的宽度持有一个加载项?

我有一个用VS2010 VSTO库构build的excel 2007加载项。 当我创build加载项的新对象时,我也创build一个Excel左边的任务窗格,使用下面的代码: Microsoft.Office.Tools.CustomTaskPane taskPaneAddIn; MyAddIn addIn; addIn = new MyAddIn(this.Application); taskPaneAddIn = this.CustomTaskPanes.Add(addIn, "My AddIn"); taskPaneAddIn.DockPosition = Microsoft.Office.Core.MsoCTPDockPosition.msoCTPDockPositionLeft; taskPaneAddIn.Width = addIn.Size.Width + 5; addIn是一个windows用户控件,它有自己的尺寸。 上面的代码似乎不工作,因为taskPaneAddIn宽度总是固定在Excel中。 用户始终必须手动展开任务窗格才能看到控件的整个宽度。 有没有任何可编程的方式来设置任务窗格的宽度?

VSTO:绘制在Excel工作表之上

我已经用C#写了一堆方便的Excel加载项,而且一切都很好。 但是我一直无法弄清楚的一点是,如果可以在工作表控件上放置graphics(位图,形状等),例如通过在其绘图事件处理程序中附加一个函数。 我不想以任何方式实际更改文档,只是暂时突出显示事物,以指示我的加载项如何查找和解释表单中的数据。 我想要做的最简单的事情就是在特定范围内绘制边框。 我可以通过创build一堆透明的顶层窗口来尝试将它们自己夹到文档窗口中,但是这真是一个糟糕的解决scheme,而且我认为窗口也会阻碍用户input。

VSTO拖放在Excel中

我有一个VSTO Excel工作簿。 在操作窗格中有一个TreeView,我希望能够将项目拖放到Excel单元格中。 TreeView中的数据存储为内存中的XML。 将这个XML转换为单元格值的方式取决于它在工作簿中的放置位置,所以我希望能够将XML放到工作簿中,然后在事件处理程序中对其进行解释,而不是在调用之前进行转换的DoDragDrop()。 我发现可以将由制表符和回车符分隔的文本从任务窗格放到单元格中,Excel将其转换为单元格表格布局。 如上所述,这不是我想要的。 我也可以将XML片段转换为文本并将其放到工作簿上。 然后在SheetChange处理程序中,我可以检查内容是否为XML,如果是,则进行适当的处​​理。 但是,如果XML包含一个<Table>标记,那么Excel会将其混乱,在触发SheetChange事件之前剥去所有XML标记并将文本节点粘贴到一起。 它似乎没有检查其他的东西; string<Table>出现在什么地方,或者其他XML是什么,或者即使文本表示格式良好的XML也没有关系。 只是出现的string就足以触发Excel中的某些处理,我无法find避开的方法。 所以这真的是两个问题: 有没有办法删除非文本对象(即System.Xml.XmlElement或类似)到Excel工作簿上,并捕获VSTO代码中的事件处理程序中的对象? 如果没有,有没有办法在Excel为我预处理之前捕获粘贴的文本?

在C#中获取NamedRange控件的句柄

我正在开发使用C#(.NET 4.0)的Excel 2007的应用程序级AddIn。 以前曾问过类似这个问题>> https://stackoverflow.com/questions/11374023/resizing-namedrange-throws-a-controlnotfoundexception C#excel插件 – 访问控件 但对他们的回应(有的话)并不适合我。 所以我想详细描述一下我想做什么,以及当我尝试做什么时会发生什么。 简而言之,我的问题是我无法获得NamedRange控件对象来修改它们,在代码中的其他地方实例化和初始化之后。 请阅读更完整的说明。 当AddIn启动时,它创build一个NamedRange控件并将其附加到特定工作表上的某些单元格>> Worksheet worksheet = Globals.Factory.GetVstoObject( Globals.ThisAddIn.Application.ActiveWorkbook.ActiveSheet); Excel.Range cell = worksheet.Range["A1"]; _configParams.HeaderNamedRange = worksheet.Controls.AddNamedRange(cell, "HeaderCells"); _configParams.HeaderNamedRange.RefersTo = "=" + worksheet.Name + "!$A$1:$A$5"; AddIn启动后,我想要允许用户重新指定NamedRange控件可以指向的单元格。 为了这样做,我让用户select一个单元格范围,然后在合适的事件处理程序方法中获取所选单元格的位置(作为string)。 然后我打算以编程方式重新指定上述NamedRange控件指向的单元格。 我已经尝试了以下方法,但都没有工作。 [方法1] Worksheet controlWorksheet = Globals.Factory.GetVstoObject(Globals.ThisAddIn.Application.ActiveWorkbook.ActiveSheet); ((NamedRange)(controlWorksheet.Controls["HeaderCells"])).RefersTo = newHeaderCellsLocation; 在运行上面的代码,它会引发一个ControlNotFoundException,并得到以下消息: Microsoft.VisualStudio.Tools.Applications.Runtime.ControlNotFoundException was unhandled by user code Message=This document might […]

MS Office自动化:macros运行时获取通知(事件)

我正在开发一个使用C#/ .NET的MS Office(Excel,Word,PowerPoint和Outlook)加载项,它跟踪和logging一些事件,当DocumentOpen,DocumentContentChange..etc发生时,但是经过几天的search,当macros在Excel工作簿,Word文档等上运行时,无法find方法(事件)来得到通知 困难的方法是尝试捕捉所有可能的path,用户可以使用鼠标和键盘挂接Win API来运行macros,它们是: 使用“macros”对话框(使用纯粹的Win API访问窗口): OnClick,如果这是ActiveWindow,并且“运行”button具有焦点,则读取文本框中“macros名称:”标签下的值,但是我发现这种方法是非常复杂的,因为有一些情况下,如:用户按ENTER键和焦点不在“运行”button或如果用户双击运行macros的macros列表中的项目.. 按下组合键:例如一个macros有一个Ctrl + F8键与之相关联。 点击一个形状(主要是excel):检查这个形状是否附有一个macros。 我可以看到这些方法非常有限。 你有更好的build议吗?

在Excel中使用c#生成dynamic生成的范围名称

在同一张工作表上生成几个未知大小的表的最好方法是什么? 值将从oracle数据库中提取,并用作多个表的值。 是否有可能创builddynamic命名范围或是其他一些方法吗? 我有一些C#的经验,但没有访问VSTO 2005。 任何帮助或build议将不胜感激。 如果要求,我愿意进一步解释这个问题。

是否有可能使用C#在Excel中撤消/重做?

我的VSTO应用程序是一个C#加载项。 我想添加一些撤消(Ctrl + Z)和重做function(Ctrl + Y)。