Tag: excel addins

列出客户机中的所有Excel加载项

问题: 我想列出安装在机器上的每个Excel版本的所有Excel加载项( 而不是COM加载项 )。 请给我一些线索或build议吗? 我做了什么 我试图从registry项中获取信息。 对于Office 2013,它在这里。 HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes下\安装\组件\ 72EFF0976DEDB96428D4154EFA5A5807 但对于Office 2007,它不在那里。 密钥的数据是: analys32.xll Data = Analysis ToolPak \提供用于统计和工程分析的数据分析工具 atpvbaen.xlam 数据=分析工具库 – 分析工具库的VBA \ VBA函数 eurotool.xlam 数据=欧元货币工具\欧元货币的转换和格式 solver.xlam Data = Solver Add-in \ Tool用于优化和方程求解 有没有办法实现这个没有硬编码每个Excel版本的组件GUID?

在C#中打开一个Excel插件

我inheritance了一个C#windows应用程序,它构build了一个大的电子表格来显示给用户。 增强function是将现有的Excel加载项添加到此电子表格中。 我一直试图添加电子表格一旦完成的代码就像这样: excelApp.Visible = true; // trying to add the Add-in string workBookPath = @"C:\AddinIWasGiven.xls"; Workbook excelWorkbook = excelApp.Workbooks.Open(workBookPath, 0, false, 5, "", "", false, XlPlatform.xlWindows, "", true, false, 0, true, false, false); 每当我这样做,我得到这个错误:“无法打开Microsoft Excel加载项进行编辑,请改为编辑源文件”。 我不确定为什么我得到这个错误。 我确实看到,excelWorkbook以“C:\ AddinIWasGiven.xls”的forms出现,但我读到的可能是debugging器如何显示它。 我是新手join项和C#。 任何build议或帮助将不胜感激。 随着一些帮助和试验和错误,我发现这工作: stringworkBookPath = @“C:\ Addin.xla”; 工作簿excelWorkbook = excelApp.Workbooks.Open(workBookPath,0,false,5,“”,“”,false,XlPlatform.xlWindows,“”,false,false,0,true,false,false);

插入正常高度的Excel行

这是我的C#代码插入到Excel工作表中的行: for (var j = 0; j < dummies.Count; j++) { mySheet.Range[myRange].Insert(Excel.XlInsertShiftDirection.xlShiftDown); } 没有什么地球在那里粉碎。 但是,如果插入下面的某一行的高度与其他行的高度不同,看起来会发生的情况是该位置的新行保持相同的高度,而向下移动的行也是如此。 因此,例如,在代码运行之前,除11之外,所有行都是正常高度,这是其他高度的两倍。 如果我在第7行插入10行,结果是行11和21是双倍高度。 在上面插入1行使得11和12双倍高度。 插入2行给出11和13行相同的结果等 所以原来的双高行似乎总是保持高度,即使高度也跟着下移的行。 有没有一种方法可以指定,当我插入一行,行高不应该留下来? 如果我手动插入一行,它都可以正常工作。 [/编辑]

无法获取Worksheet类的复制属性

我试图从工作簿复制工作表到另一个使用Worksheets.Copy函数。 但是,这似乎只在一些文件中工作,而对于其他人我得到“无法获得Worksheet类的复制属性”错误消息。 我试图从其他工作簿手动复制/移动工作表。 此外,尝试解除/保护工作簿和工作表,但似乎没有工作。 我正在使用Microsoft Office 2010.是否有Excelfunction可以启用/禁用从其他工作簿复制工作表?

如果语言环境已更改,则UDF不适用于单元格引用

我写了一个C#COM(自动化)加载项,我正在使用运行在Windows 7上的Excel 2010 x64进行testing。它定义了许多用户定义的公式。 我们来看一个具有两个string作为参数的UDF示例,首先用文字调用,然后用单元格引用: =MyFunction("A","B") =MyFunction(A1,B1) 如果区域设置=英文,那么这两个工作。 如果将区域设置设置为法语并重新打开工作簿,则Excel将公式更改为: =MyFunction("A";"B") =MyFunction(A1;B1) 第一个(文字)仍然有效。 第二个现在不起作用=它只是返回#VALUE! 而且我的pipe理的UDF代码甚至没有被调用(使用Visual Studio 2010进行debugging)。 为什么是这样?

Excel 2007不允许从xlsm引用xlam

我在Windows 7 Pro下运行Excel 2007。 我有两个我已经保存为.xla的加载项,即“Excel 97-2003加载项”。 一个是“主”加载项,它是指另一个“从属”(通过工具>参考) 在VBA中,我可以从其他电子表格中保存为.xlsm格式的主加载项引用。 它似乎工作正常。 问题: 我将插件的格式从.xla更改为.xlam(这是不平凡的,包括保存为.xlsm格式) 我将Master .xlam中的引用更改为指向新的Slave .xlam。 这工作正常,可以testing。 但是当我尝试从.xlsm电子表格中引用主文件时,则会收到消息“无法添加对指定文件的引用”。 如果我再试一次,我会得到一个只是说“400”的消息。 任何人都可以提出为什么不可能从.xlsm添加对.xlam的引用吗? 代码在两个加载项格式中是相同的。 从Master .xlam到Slave .xlam的引用没有问题。 只有在尝试从.xlsm电子表格中引用Master .xlam时才会出现该问题。 这两个插件也引用其他库: Visual Basic for Applications Microsoft Excel 12.0对象库 Microsoft Office 12.0对象库 Microsoft脚本运行时 Microsoft Forms 2.0对象库 我也尝试将Master保存为.xslm,并引用它。 它工作正常,但当然主插件的工作表是可见的,我想避免。 谢谢你的帮助。

C#Excel添加:以XMLforms获取活动工作表

我有一个工作的Word添加,它将文档的所选部分(包括图像,表格等)保存为数据库中的XMLstring。 插件还可以检索先前保存的XMLstring,并将其插入当前打开的文档的当前位置,保留样式和格式。 我想为Excel做几乎相同的工作。 我想获得一个表示活动工作表的XMLstring,将其保存到数据库,然后检索该XMLstring并将其作为工作表插入到活动工作簿中。 问题是,我不知道如何获得该XMLstring,也不知道如何将其作为工作表插入。 我一直在试验和寻找几个小时,但无济于事。 获取活动工作表似乎很简单: dynamic sheet = Globals.ThisAddIn.Application.ActiveSheet; 但是我还没有得到进一步的发展。 作为参考,这是我如何得到Word中的XMLstring: Microsoft.Office.Interop.Word.Selection currentSelection = Globals.ThisAddIn.Application.Selection; string xmlString = currentSelection.XML; 为了插入它,我使用了: string xmlString = …; // Read the string for the database. Microsoft.Office.Interop.Word.Selection currentSelection = Globals.ThisAddIn.Application.Selection; currentSelection.InsertXML(xmlString);

当我尝试运行Excel AddIn时发生FileNotFoundException

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml.Linq; using Excel = Microsoft.Office.Interop.Excel; using Office = Microsoft.Office.Core; using Microsoft.Office.Tools.Excel; namespace ExcelAddIn1 { public partial class ThisAddIn { private UserControl1 userControl; private Microsoft.Office.Tools.CustomTaskPane myCustomTaskPane; private void ThisAddIn_Startup(object sender, System.EventArgs e) { userControl = new UserControl1(); //myCustomTaskPane = this.CustomTaskPanes.Add(myAddIn, "My Task Pane"); myCustomTaskPane = this.CustomTaskPanes.Add(userControl, "Enter […]

来自HRESULT的exception:0x800A03EC – 在Excel加载项中将数组写入范围

我在C#中的Excel加载项中有以下代码: long lngArrayLength = 14; long lngArrayLength2 = array2.Length; Excel.Range rngValues1 = (Excel.Range)wsNew.Cells[2, 1]; Excel.Range rngValues2 = (Excel.Range)wsNew.Cells[lngArrayLength2 + 1, lngArrayLength]; Excel.Range rngValues = wsNew.get_Range(rngValues1, rngValues2); rngValues.Value = array2; 作为参考,array2有十个元素,每个元素有14个子元素。 例: array2 = { (0, "a0", "b0", "c0"… "n0"), … {9, "a9", "b9", "c9"… "n9) } 上面的rngValues大小为{[1..10,1..14]} 每次尝试运行时,都会出现以下错误: 来自HRESULT的exception:0x800A03EC 我已经排除了: 1)文件格式,将Book1保存为.xlsx不起作用 2)达到列或行限制,与数千个元素或10个元素做同样的事情 3) [0] vs […]

通过VBA激活Powerpivot加载项

我只有非常有限的VBA技能,因此在回答是否可以通过VBA激活Excel中的加载项时需要帮助。 我正在处理的报告需要有一个激活的Powerpivot加载项,因此我想创build一个button来激活应用程序。 为了完全理解我在说什么,我想要的path是: Excel – >文件 – >选项 – >加载项 – >pipe理 – > COM加载项 – > Microsoft Office Powerpivot for Excel 2013