Tag: excel addins

如何使用REGASM32非绝对地使Excel引用(早期绑定)

我有一个要求为Excel加载项创build一个新的安装。 我已经创build了许多这样的问题,这个问题不一定是关于安装构build过程的。 这是关于如何在Excel中正确引用.dll,以便它可以在接收机上正确引用。 Excel加载项引用(工具/引用)文件ZOPLib.dll(我们自己devise的一个.net dll)。 它在C:\folder A引用它。 我们使用REGASM32来注册.dll,并且在开发机器上一切工作正常。 将加载项移到虚拟机中我将ZOPLib.dll放在C:\folder B并在那里注册。 因为加载项指向C:\folder A ,即使我REGASM32 DLL,插件无法find它(该DLL)。 我必须REGASM32 /卸载DLL,REGASM32注册它在C:\folder B ,然后进入加载项,并告诉它,该DLL是在C:\folder B 。 为什么到dll的链接是绝对的? 我怎样才能使Excel引用这个DLL或注册的方式,使加载项可以在新的文件夹中find它? 如果我可以让这个DLL的.net开发者将它作为一个ActiveX DLL来产生,那么我的麻烦能够解决吗? InstallShield不处理注册不是activex / ocx的dll,因为它使用REGSVR32。 谢谢你的帮助!

如何用VSTO和C#创buildExcelfunction区“选项卡组”

当我添加一个图表到一个Excel文件,然后select那个图表,两个新的标签出现在function区上, DESIGN和FORMAT和标签上方,我看到“标签组”标题的CHART TOOLS ,绿色的背景和酒吧名称。 我如何在自己的加载项中创build这个“选项卡组”function? 我找不到任何设置或属性,允许我这样做。 这是我正在谈论的…

在Excel工作表中保存自定义属性

我们在C#中有Excel加载项。 为了支持一些function,我们使用Worksheet.CustomProperties 。 我们发现,添加一些自定义属性后,我们正在改变它的价值。 比如我们通过Add方法设置“1”。 在某个时刻,我们将相同的值更改为“2”。 然后我们保存工作簿并再次打开。 出于某种原因,我们看到“1”而不是“2”。 为什么? 看起来我错过了什么,但不知道是什么。 更新: public class CustomPropertyUtil { protected readonly Worksheet Sheet; public WorkSheetCustomPropertyUtil(Worksheet sheet) { this.Sheet = sheet; } protected bool Exists(string propertyName) { try { return Sheet.CustomProperties.Cast<CustomProperty>().Any(c => c.Name == propertyName); } catch (System.Runtime.InteropServices.COMException) { return false; } } protected object GetValue(string propertyName) { CustomProperty property […]

input数据更新时可以直方图function分析toolpak更新结果吗?

我在“分析工具”中使用直方图和相关函数,并在更改input数据或引用时需要更新结果。 这在某种程度上可能吗? 谢谢

在Excel 2013中dynamic禁用/启用自定义上下文菜单

我有一个Excel AddIn。 我在单元格的上下文菜单中添加2个上下文菜单项。 当您右键单击一个单元格时,根据单元格的公式,一个上下文菜单项将被禁用。 我把这个代码放在sheetSelectionChangeEvent 这在Excel 2003,2007和2010中正常工作,但在Excel 2013中不起作用。 以下是代码: private void ApplicationSheetSelectionChange(COMObject sh, Range target) { DisableMenubarsButtonsWRibbon(XLApp.Selection as Range); } public void DisableMenubarsButtonsWRibbon(Range rng) { var formula = rng.Formula as string; if(formula is function1) { _contextMenuItem1.Enabled = true; _contextMenuItem2.Enabled = false; } else if(formula is function2) { _contextMenuItem1.Enabled = false; _contextMenuItem2.Enabled = true; } else […]

Excel自动化插件 – function不起作用

编辑:我想要做的真正的解决scheme可以在这里find这个职位。 我只是想公开一些编译好的函数。 使用Excel DNA nuget软件包certificate这非常简单。 您只需添加一个类库,添加nuget包,并复制粘贴在自述文件中find的代码。 单击F5,它将启动加载项已加载的Excel。 如果你想让你的函数保持持久性,只需要通过“开发人员”function区部分手动将加载项添加到excel文件。 原文:我正在按照这篇微软文章的说明来介绍如何创build一个自动化加载项。 代码编译得很好,我可以从Excel中访问函数。 但是这些function不起作用。 当我尝试给一个单元格分配一个函数调用的结果时,我几乎总是得到#value或#ref错误。 更具体: 以下由Microsoft提供的function不起作用。 它显示了我尝试使用它的单元格中的#value错误。 我select使用鼠标随机单元格范围作为函数的参数。 Public Function NumberOfCells(ByVal range As Object) As Double Dim r As Excel.Range = TryCast(range, Excel.Range) Return CDbl(r.get_Cells.get_Count) End Function 下面的函数,我创build不起作用。 我得到#ref错误。 我通过传递直接整数(Add1(1,2))或包含数字的单元格来调用它。 Public Function Add1(ByVal i1 As Integer, ByVal i2 As Integer) As Integer return i1+i2 End Function 下面我创build的函数(?!?): […]

检查macros样式的Excel UDF中的数组公式

我正在使用Excel-DNA在Excel和NetOffice中创buildUDF以进行与版本无关的自动化调用。 在一个macrostypes的函数中,我可以使用以下命令从单元格中获取公式: ExcelReference cellRef; // of course in reality this is assigned var formula = (string)this.excelCall(XlCall.xlfGetFormula, cellRef); 此外,虽然,我想知道这是否是数组公式的一部分,如果是的话。 使用Excel自动化,我可以使用类似于: Range("A1").HasArray Range("A1").CurrentArray.Address 但是,Microsoft拒绝在UDF调用中使用自动化: https : //support.microsoft.com/en-us/kb/301443 那么,有没有办法通过C API来获取HasArray和CurrentArray属性,或者有没有人知道它是否可以(在UDF声明为macrostypes的上下文中)使用自动化?

从vba的Excel加载项运行function,比使用运行“mySub”有更简单的方法吗?

我正在尝试创buildExcel 2010的第一个Excel加载项。它大部分工作正在运行,它是从function区button运行的,但是我无法从工作簿的VBA代码中处理加载项的子例程。 根据这个答案 ,应该可以简单地使用语法: mySub 要么 Call mySub 但是这会导致错误“Sub或Function not defined”。 我只能设法运行它们: Run "mySub" 要么 Application.Run("myAddIn.xlam!mySub") 有没有办法包括加载项,所以我可以解决它的简单方法? 已经在工具 – >加载项列表中检查了加载项,并且具有与其文件名(CalculationFunctions.xlam)不同的唯一名称(CalcFunctions)。 加载项文件在不同的磁盘上,我在服务器上工作,但我不认为这很重要。

将项目添加到ROT(运行对象表)

我知道如何使用*****。GetActiveObject(ProgId),但是问题是,我使用这个代码行的几个应用程序没有添加到ROT,即使它们已经打开,我得到一个HRESULT错误。 但是,如果我点击另一个应用程序,然后返回到原来的应用程序,代码行工作得很好。 我离开这个如此模糊的原因,是因为这是一个问题,我有超过10个应用程序。 我之所以没有发布代码是因为我不相信这个问题是基于代码的,而是我认为这个问题是由于我的一个简单的缺乏理解。 我遇到这个问题最重要的程序之一是“Microsoft Excel”。 我想要做的就是能够在特定的单元格中启动用户。 我已经看遍了所有关于如何在Excel中使用***** GetActiveObject(ProgId)的一个体面的解释,但是,似乎没有任何合理的答案。 本程序可能用c#编写,但是,如果在visual basic中更简单,那就不是问题

编程macros安装AddIn后自动运行

我有一个加载项将在几个用户之间共享。 在那个displayParameters()里面,我有一个叫做displayParameters()的macros,它只是注册来自Add-In的其他函数,以及这些函数及其参数的描述。 问题是每次用户安装加载项,他/她必须运行一次这个macros为了注册函数/参数。 有没有一种方法可以使用户每次安装加载macros时自动运行macros? 我不希望每次用户打开一个电子表格,安装了插件,或者类似的东西时,macros就不会运行。 我只想在安装加载项后运行macros。 通过安装Developer -> Add-Ins -> Selecting the Add-In -> Ok我的意思是要Developer -> Add-Ins -> Selecting the Add-In -> Ok 有什么类似的更改事件,但与AddIns?