Tag: excel addins

我可以用Excel12交换Excel4吗?

在Excel C API中,Excel4和Excel12函数有什么区别? 从在线文档中我看到Excel12是最新的版本,但现在提到可能的差异。 我可以用C ++代码中的Excel12replace所有的Excel4调用吗? 谢谢。 Excel 2010,Windows 7

SaveCopyAs方法不起作用

(我是英文的一周,所以起初不好意思解释:D) 我通过我的应用程序打开一个excel文件。 我有一个Excel中的Addd-In和一个function区中的button来保存button的Click事件的代码(确切地说是一个保存button所做的保存操作)在这里: Globals.ThisAddIn.Application.ActiveWorkbook.Save(); 在我的应用程序中,我将一个方法(称为WorkbookBeforeSave)分配给工作簿的“BeforeSave”事件处理程序,在我的自定义目录中手动保存工作簿。 private void WorkbookBeforeSave(bool saveasui, ref bool cancel) { _excelApp.EnableEvents = false;//_excelApp is my Excel Application if (!_excelWorkbook.Saved)//_excelWorkbook is Active Excel Workbook { _excelWorkbook.SaveCopyAs(_savedFilePath);//_savedFilePath is my custom directory _excelWorkbook.Saved = true; } cancel = true; _excelApp.EnableEvents = true; } 问题是当我单击原始Excel保存button“SaveCopyAs”方法正常工作,但点击我的自定义保存button“SaveCopyAs”方法不起作用。 (没有抛出exception,所有代码编译和debugging)

Excel评估树错误? 嵌套调用addin函数调用20,000次

Excel 2003,Windows XP SP3: 我们有一些Excel用户,他们使用非常大的复杂的Excel工作簿。 一个典型的工作簿可能有60多个工作表,并且大小可以超过70MB。 我们制作了一个.xll插件,并在整个这些电子表格中使用。 我们的插件具有丰富的debugging和日志function。 我们注意到一些非常奇怪和不稳定的行为,我们一直无法复制。 我在这里描述一个典型的问题的performanceforms。 一个电子表格的范围之一有一个公式数组,涉及对函数的嵌套调用,Excel函数和我们自己的插件函数。 公式可能看起来像这样: {=IF(cndtn,AddinFcn1(rng,INDIRECT(VLOOKUP($A2549,rng2,col,0)),AddinFcn2(param)),-1)} AddinFcn1和AddinFcn2是我们的插件中的注册函数。 我们可以监视Excel调用每个插件函数的次数,并将所有调用与导致调用的单元格或范围评估进行匹配。 如果我们在一个干净的Excel中加载插件和工作簿,然后计算工作簿(“F9”),计算可能完成罚款的第一,第二,甚至10倍,我们可以看到一个调用AddinFcn2和AddinFcn1源于对包含上述公式的范围的评估。 但有些时候,事情开始疯狂了:在第三个“F9”中,内部的AddinFcn2可能突然被excel调用了19次,然后在第四个“F9”中,内部的AddinFcn2被调用了20,000次。 或者,也许一切都很好,直到第10个“F9”,在评估范围内突然内部AddinFcn2被调用了19,000次。 奇怪的是,外部函数AddinFcn1仍然只被调用一次。 当发生这种情况时,似乎没有韵律或理由,或者函数被调用了多less次。 进入调用的数据,实际上是电子表格中的数据,每个F9都是相同的 – 从一个计算到下一个计算都不会发生变化。 有没有人看过类似的行为? 有没有人猜测什么可能导致Excel(不必要地)重新计算内部函数调用数十甚至数十万次?

VSTO预填充模板可通过AddIn获取

我是VSTO的新手 – 在Excel中,我们希望用户点击一个Excel AddIn图标,以获得一个标题,公式,颜色/字体等模板。最好是通过VS2010“Excel模板“或”Excel AddIn“项目? 请注意,填充的模板将需要包含从数据库中填充数据的下拉列表(将通过WCF服务传输)。 此外,Excel VSTO客户端将需要将数据推送回WCF服务进行数据库更新

通过COM dll接收数据时,Excel Application.Ready = False

我使用调度接口通过COM DLL将外部数据传递到Excel插件。 在VBA汇方法中,我试图将数据写入适当的单元格之前检查Application.Ready = True, If Application.Ready = True Then With Workbooks(bookName).Sheets(sheetName).Range(rangeName) .Value = thisData End With Else Debug.Print "Dropped Payload" End If 我不想只是放弃数据,所以我试图做一些事情,以使其正确。 调用Application.OnTime而不是设置值。 不幸的是,当Application.Ready = False时,Excel不会让我调用Application.OnTime。 使用这里的技术来启动一个Windows定时器,然后调用OnTime。 这里的问题是多个事件相互重叠,他们都试图同时访问AfterUDFRoutine1,导致崩溃。 所以我最近的想法是将数据放入队列,然后在Application.Ready = True时排空队列。 为了实现这个,我需要在Application.Ready更改状态时触发一个事件,但是我无法在列表中find该事件。 有人知道这是否存在,以及如何揭露它? 或者,如果有人对如何使这项工作有更好的想法,我对此非常开放。 我唯一不能做的build议是使用RTD,而不是我已经调度 – 我不能改变那部分。 提前致谢!

如何编写具有可变数量参数的Excel加载项函数(例如:MAX,MIN …)

我正在使用Microsoft的开发框架(Excel 2010)在C ++中编写Excel加载项。 我想知道是否有可能用c + +写一个excel函数,有MAX,MIN,AVERAGE … 提前致谢。

我怎样才能使用C#按下Excel插件的function区button? (路透社Excel插件)

我正在写一个ac#应用程序来从excel中获取数据,其中的数据来自excel的路透社地址。 路透社插件创build了两个卓越的色带(“主页”,“插入”等旁边的菜单标签)“汤森路透Datastream”和“汤森路透”。 为了在Excel中使用Retuers插件function,我首先需要按下“Thomson Reuters Datastream”function区中的“login”button(因此它是绿色的,并且表示“在线”而不是红色和“离线”),因为它需要“在线”,否则路透社的插件function将无法正常工作。 我怎样才能推这个button(访问function区,并确保loginbutton是“在线”,如果没有,然后按下button)从C#? 我很喜欢在C#中创buildExcel应用程序对象,并操作单元格等,但不知道如何按插件的function区button。 任何帮助/指导,非常感谢! 谢谢!

SpecialCells在Excel 2010中导致SheetSelectionChange事件

我有一个testingmacros Sub test() Dim rSrcMatrix As Range Set rSrcMatrix = Sheets("Code Matrix").Range("Xfer_To_Xfer_Matrix").Range("A1") Set rSrcMatrix = rSrcMatrix.Resize(rSrcMatrix.SpecialCells(xlCellTypeLastCell).Row, rSrcMatrix.SpecialCells(xlCellTypeLastCell).Column) End Sub 我正在使用这个macros来testing我在VS2010中创build的COM插件。 我已经委托SheetSelectionChange到一些函数的SheetSelectionChange事件。 现在我注意到,每当我运行这个macros,Excel会触发SheetSelectionChange事件4次,我的插件会多次调用关联的方法。 有什么我失踪或这是一个Excel中的错误?

如何closuresExcel加载项?

我有大约3或4个Excel加载项。 如果我尝试从Excel选项>加载项>pipe理> COM加载项>禁用,然后我得到一个消息,只有pipe理员可以做到这一点。 Excel可以以pipe理员身份启动吗? 如果没有插件隐藏在哪里? 他们不在这里 HKEY_CURRENT_USER \软件\微软\办公室\ EXCEL \加载项 或在这里 HKEY_LOCAL_MACHINE \ SOFTWARE \微软\办公室\ EXCEL \加载项 Windows 7 x64个人电脑是在组策略下pipe理的,所以还有其他的地方呢? 它们不是基于VSTO的插件,因为VSTO没有安装。 我显然有权访问registry,并可以更改registry中的任何内容。

多重combobox和参数驱动程序

我正在尝试使用通过C#Excel加载项填充100个combobox的Excel工作表。 我的问题是,我需要创build一个通用程序CmdBtn_Click()将由combobox的每个实例调用并传递其值和名称。 换句话说,我需要参数驱动的过程,将被适当的事件调用。 有人可以build议如何在C#中做到这一点? for (int i = 1; i < col + 1; i++) { var comboRange = currentSheet.Cells[2, i]; var cmb_Column = (Excel.Shape)currentSheet.Shapes.AddOLEObject("Forms.ComboBox.1", Type.Missing, false, false, Type.Missing, Type.Missing, Type.Missing, Convert.ToInt32(comboRange.Left), Convert.ToInt32(comboRange.Top), Convert.ToInt32(comboRange.Width), Convert.ToInt32(comboRange.Height)); cmb_Column.Name = "cmb_Column" + i; Excel.OLEObject oleComboBox = (Excel.OLEObject)cmb_Column.DrawingObject; cb = Invoker.PropertyGet(oleComboBox, "Object") as MSForms.ComboBox; cb.AddItem("Test1"); cb.Change += new MSForms.MdcComboEvents_ChangeEventHandler(CmdBtn_Click); […]