Tag: 加载项

VSTO Excel加载项与Visual Studio Express

我想使用Visual Studio C#2010 Express为MS Excel创build一个加载项(一个精确的function区)。 我在这里和这里以及其他地方search了解它。 但是,当我想创build一个新的项目,我没有看到任何模板描述,我甚至没有看到办公室选项卡。 是因为我使用Express版吗? 我认为不应该。 因为在这个官方的比较中,他们说所有版本都有办公室的发展能力。 我能做些什么来开发这个加载项?

我的Excel 2010添加仅在打开空白工作簿时显示。 打开现有文档时不会显示

我们已经做了一个Excel的补充,安装正确,只会显示从主图标(或空白工作簿)打开Excel时。 打开任何现有的保存的Excel文档时,它不会显示在工具栏上。 我已经确定,当打开一个现有的文档,在文件 – >选项 – >添加,它是正确的在COM添join选中。 对于我们使用我们的join,我们必须打开一个空白的工作簿,并拖动我们现有的文件到空白的工作簿。 任何人都不知道为什么它只会出现在空白工作簿的function区而不是现有的.xlsx文件? 我甚至在打开一个空白工作簿的时候运行了一个testing,确认添加的function是在function区上,把一些文本放在一个单元格中,保存到桌面上,closures它,然后重新打开。 然后它不显示。 这个添加是用VS2010做的。 这是来自“ThisAddIn.cs”的代码 public partial class ThisAddIn { private void ThisAddIn_Startup(object sender, System.EventArgs e) { } private void ThisAddIn_Shutdown(object sender, System.EventArgs e) { } #region VSTO generated code /// <summary> /// Required method for Designer support – do not modify /// the contents of this […]

撤销Excel插件的操作

在Interop.excel中如何撤消工作? C# – 在VS中制作插件 我想象如下: 我在栈上注册一个撤消方法(由我实现)。 我保存当前状态…在哪里? 当用户使用撤销(ctrl-z)时,我的撤消方法被调用,并且用我存储的数据恢复以前的状态。 虽然不能得到任何好信息。 也许它完全不同?

不正确的asynchronous/等待工作,Excel应用程序级别加载项中的Excel事件

我在加载项应用程序中遇到了使用asynchronous/等待的问题,我有自定义任务窗格,用户可以使用它下载一些数据,所以出现问题: 待完成的操作完成后,控件不会返回到上一个执行上下文。 我用windows窗体创build了示例,并粘贴与等待相同的方法,它工作正常 – 我可以在等待操作后使用窗体控件,但不是在加载中,我不得不调用自定义任务窗格调用方法。 简单的例子: private void SearchPaneButton_Click(object sender, EventArgs e) { Search(); } private async void Search() { var searchText = SearchTextBox.Text; SearchPaneButton.Text = "Loading…"; var data = await new DataServiceClient().GetDataAsync(searchText); this.Invoke((MethodInvoker)(() => { SearchPaneButton.Text = "Search"; ToggleWorkbookEvents(); })); } 在我的插件中,我需要处理一些事件 – 工作表被改变,工作表被激活/停用,但是这些事件消失并且在等待操作之后不被触发,并且我必须在每个事件之后使用诸如“切换”(移除+添加)事件等待使用。 简单的例子: private void ToggleWorkbookEvents() { var excel = Globals.BPNAddIn.Application; //need […]

Excel 2007插件显示,但不工作

我创build了一个出现在用户界面中的Excel插件,但每当我点击它都不起作用。 Option Explicit Public sheetscol As Collection, depshtnm Public hasdeps As Boolean '*********************************** '*finds the external dependencies of the cell, and places them in the 'sheetscol' collection '*********************************** Sub depfinder_eventhandler(control As IRibbonControl) depfinder End Sub '————– Sub depfinder … End sub 这是XML CustomUI: <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" xmlns:m="MattSinSpace"> <ribbon> <tabs> <tab idQ="m:MattTab" label="Matt Tools" insertAfterMso="TabHome"> <group idQ="m:migration" […]

Excel加载项如何响应任何工作表中的事件?

我们的工作簿是服务器生成的SpreadsheetML ,它不能包含任何 VBA代码。 不幸的是,创build本机Excel文件或Excel 2007 XML文件也不是一个选项。 所以,我有一个Excel加载项(VBA,而不是XLL),我们的每个用户都安装了一些额外的UDF等,我们的工作簿需要。 这很好,但现在我需要有一个macros, 每次用户更改任何单元格中的文本时都需要执行,而不pipe当前正在使用哪个工作簿。 到目前为止,我已经在我的加载项中创build了一个新的Class模块(SheetChangeHandler),代码如下: Option Explicit Private WithEvents App As Application Private Sub Class_Initialize() Set App = Application End Sub Private Sub App_SheetChange(ByVal Sh As Object, ByVal Source As Range) Debug.Print "Changed" On Error GoTo Finish App.EnableEvents = False DoWorkOnChangedStuff Sh, Source Finish: App.EnableEvents = True End Sub 在我的加载项中,我添加了一行来实例化新类: […]

用C#在Excel中查找上次使用的行

可能重复: 如何获得Excel表格中占用的单元格的范围 我试图findExcel工作表中最后使用的行。 为了做到这一点,我使用这个代码: int lastUsedRow = currentWS.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell,Type.Missing).Row; 大多数情况下,它可以正常工作,但是有时候Excel会认为表单中的行数比假定的要多。 Fx:如果我将包含12行的sheet1的数据复制到一个空的sheet2,然后删除sheet2中的所有数据,通过右键单击并按下“Delete …”并将数据从sheet3(包含5行)复制到sheet2,然后lastUsedRow会给我12的值,应该是5。 上面的图像示例假设给我的值22作为行计数,而是我会得到634.注意滚动条的权利。 看起来像Excel认为,即使我刚刚删除所有单元格之前填充了一些单元格,然后将更less行的新数据复制到表单中。 是否有任何方法来“调整”工作表中的数据视图,以便我能得到正确数量的使用过的单元格,或者可能是另一种方法来查找最后使用的行数? 谢谢。

Excel插件与无缝撤消:可能吗?

我正在考虑实现一个使用COM( 而不是 VBA)的Excel加载项,它将处理工作表中的数据。 我将需要这个加载项与Undo堆栈无缝集成。 进一步来说: 这个加载项对数据的任何修改都需要用户撤销(通过标准的撤消操作) 需要保留插件操作发生之前撤消堆栈中的项目 到目前为止,我的(尽pipe敷衍)研究,Excel是否可以允许这一点还不清楚。 如果没有,这是一个showstopper,加载项将没有价值。 我的问题:这可能吗? 这更像是一个“是或否”的问题,而不是一个“如何”的问题,因为我需要知道我是否正在进行大雁追逐。 然而,任何关于如何做的指针都是一个好处。

通过打开文件启动Excel时,Excel加载项不加载

有几个用户报告说,如果他们通过双击Excel文件启动Excel,那么加载项将不会加载。 但是,如果他们通过开始菜单(或快速启动工具栏)打开Excel,加载项加载正常。 一些细节,如果他们帮助: 这是一个COM加载项,用VB6编写。 该问题已在Windows XP / Excel 2003和Vista / Excel 2007系统中报告。 加载项实现了IDTExtensibility2。 启动模式设置为“启动时加载”。 任何想法的原因或如何解决这个将不胜感激。 更新:我相信我已经find了解决这个问题的方法。 当一个IDTExtensibility2 dll被注册时,它会自动为加载行为,加载项名称等创buildHKCU条目。但是我也有我的设置文件注册到HKLM的加载项,以便所有用户都可以使用机。 这导致系统上的registry项双重。 我不认为这将是问题的原因。 我手动编辑了HKCU的条目,而Excel似乎忽略了它们,并遵循了HKLM的条目。 但是,我收到另一位开发人员的提示,说明他们有同样的问题,他们的解决scheme是删除重复的registry项。 我试了一下,似乎已经解决了报告错误的(非常less的)人的问题。 下面的Inno设置代码将添加HKLM条目,仔细检查加载行为是否正确(因为我是偏执狂),然后删除HKCU条目。 将您的文件属性replace为您看到的全部大写。 [Registry] Root: HKLM; Subkey: Software\Microsoft\Office\Excel\Addins\CONNECT_CLASS; Flags: uninsdeletekey Root: HKLM; Subkey: Software\Microsoft\Office\Excel\Addins\CONNECT_CLASS; ValueType: string; ValueName: FriendlyName; ValueData: ADDIN_NAME Root: HKLM; Subkey: Software\Microsoft\Office\Excel\Addins\CONNECT_CLASS; ValueType: string; ValueName: Description; ValueData: ADDIN_DESC Root: HKLM; Subkey: […]

自动化加载项与COM加载项

我是附加程序的新手,需要以下scheme的帮助: 我有一个C#Excel自动化插件,它调用几个UDF 。 在自动加载项加载期间,我想要进行用户名和密码检查,在加载项加载时,用户可以input其详细信息的屏幕必须popup。 如何使用自动化加载项来完成? 如何使用自动化插件一般地完成事件处理? 我想要在用户按下F9来计算一些单元格中的UDF公式时进行一些计算。 是否有任何文章解释了自动化插件中的事件处理?