Tag: vsto

Excel 2007以编程方式最小化function区,但不是菜单栏

在Excel 2007中,我们可以右键单击function区并select“最小化function区”并将其最小化。 我努力了 Application.ExecuteExcel4Macro("show.toolbar(\"ribbon\",false)"); 这隐藏了整个丝带,但我不想隐藏整个丝带。 我甚至尝试过 Application.SendKeys("^{F1}", true); 但它不可靠,因为有时它不能正常工作。 有没有办法使用C#VSTO代码? 我读了很多关于toggleribbon()函数,但无法find使用它的方法。 编辑:有方法,你可以实际上发现,如果function区已经最小化。 我用了 Office.CommandBars cbs = null; cbs = Application.CommandBars; foreach (Office.CommandBar cb in cbs) { if (cb.Name == "Ribbon") { if (cb.Height > 90) { this.Application.ActiveWindow.Activate(); //to get focus on current workbook so that sendkeys will work Application.SendKeys("^{F1}", true); } } }

检查焦点是否设置为excel单元格

我正在研究VSTO项目。 我需要在Excel vsto项目中检测input焦点。 我想检查焦点是否在Excel单元格,或者它是在其他Excel组件,如查找对话框,文档操作窗格或任何其他Excel内置对话框。 这有可能发现吗? 如屏幕截图所示,我想知道input焦点是否设置为excel单元格?

.NET – 数据绑定上的Excel ListObject自动调整

我正在开发使用Visual Studio Tools for Office(2008)的Excel 2007加载项。 我有一个工作表上有几个ListObjects,它们在启动时绑定到数据表。 当他们绑定,他们自动大小正确。 问题出现时,他们重新约束。 我在function区栏上有一个自定义button,可以返回到数据库,并根据用户input的一些标准检索不同的信息。 这个新数据返回并重新绑定到ListObjects – 但是,这次他们没有resize,我得到一个exception: ListObject不能被绑定,因为它不能resize以适应数据。 ListObject无法添加新行。 这可能是由于无法将对象移动到列表对象的下方。 内部exception:“范围类的插入方法失败” 原因:Microsoft.Office.Tools.Excel.FailureReason.CouldNotResizeListObject 我无法在Google或MSDN上find有关此错误的任何有意义的内容。 我一直试图弄清楚这一点,但无济于事。 基本代码结构: //at startup DataTable tbl = //get from database listObj1.SetDataBinding(tbl); DataTable tbl2 = //get from database listObj2.SetDataBinding(tbl2); //in buttonClick event handler DataTable tbl = //get different info from database //have tried with and without unbinding […]

有没有办法在Excel VSTO中使用C#和无VBA捕获HotKeys / Shortcuts?

所以我想在我们的Docuement级别的Excel VSTO插件中捕获一些关键命令。 我似乎无法find办法去做,除了使用VBA和我们的插件与VBA交谈。 任何帮助/例子将不胜感激。 我正在使用Excel 2007。

VSTO:在“批量”中获取Excel单元格属性

在Excel中从一个范围中获取值时,获取“批量”(作为二维数组)的值要比循环遍历每一行和每一列要高效得多。 例如: Dim range = Globals.Table.Range("A1:E5") Dim values(,) As Object = range.Value 25个单元并没有什么区别,但是10000行20列确实没有什么区别。 到现在为止还挺好。 我的问题是:有没有人find一种方法来做其他属性的“批量”取回? 例如,我想查找哪些单元格以某种方式着色。 我喜欢做一些像“range.Interior.Color”,但返回一个值,而不是一个值的数组。 所以我最终循环,这可能是100甚至1000倍慢。 对于大桌子来说,这真是一个杀手。 PS:它看起来像。公式行为就像.Value:我可以一次取多个。 但是我还没有哄骗颜色变得好看。 我感谢您的帮助!

如何正确有效地使用WorkbookBeforeClose事件?

每天,一个人需要检查具体的工作簿是否已经根据彭博和路透市场数据正确更新; 即所有数据都已经通过,数字看起来是正确的。 过去,人们并没有检查导致上传到其他系统的“数字”。 这个想法是,需要开发一些“东西”,以防止使用者closures/保存工作簿,除非他/她检查了更新是正确的/准确的。 numbers look correct行为纯粹是一个直观的练习,因此将不会被编码。 简单的解决scheme是在closures特定工作簿之前提示用户以validation数据已被检查。 使用VSTO SE for Excel 2007,创build了一个加载项,该加载项挂接到在加载项ThisAddIn_Startup初始化的WorkbookBeforeClose事件 private void wb_BeforeClose(Xl.Workbook wb, ref bool cancel) { //…. snip … if (list.Contains(wb.Name)) { DailogResult result = MessageBox.Show("some message", "sometitle", MessageBoxButtons.YesNo); if (result != DialogResult.Yes) { cancel = true; // i think this prevents the whole application from closing } } } […]

如何更改轴标签的方向?

我在Excel中有一个图表; 我需要以编程方式在一个轴上更改文本标签的方向。 想法?

VSTO(文档级):Excel中的单个上下文菜单(右键单击菜单)

是否可以通过C#(VSTO)禁用或configuration(单元格,范围) 上下文菜单 。 如果是的话,我该如何实现它(在文档级的VSTO Excel应用程序中) 例如,我想禁用上下文菜单中的一些项目(例如复制/粘贴),并添加新的项目或replace标准的上下文菜单与一个完整的自己的菜单! Smarttags是Excel中上下文菜单的一个很好的select吗?

如何使用Excel Interop获取过滤行的范围?

我正在使用Excel互操作程序集为我的项目,如果我想使用自动filter,那么可能使用 sheet.UsedRange.AutoFilter(1,SheetNames[1],Microsoft.Office.Interop.Excel.XlAutoFilterOperator.xlAnd,oMissing,false) 但我怎么能得到过滤行? 任何人都可以有想法?

获取Excel范围对象的最后一个单元格(列,行)

我有一个Microsoft.Office.Interop.Excel.Range对象,并希望估计该范围的结束坐标,即(最后一列,最后一行)。 没有像LastCol , LastRow属性。 唯一的属性是Column和Row ,它们指定了第一个单元格。 但是我怎样才能得到范围的最后一个单元?