Tag: vsto

带有用户权限的Office加载项

我正在开发使用Visual Studio 2015和C#的Office Excel加载项。 此加载项仅供pipe理员用户使用,并且工作正常。 我最近改变了这种行为,一个普通用户(没有pipe理员权限)现在可以安装该加载项。 使用InstallShield限制版我更改了属性: ALLUSERS从'1'到'' 要求pipe理权限从“是”到“否” InstallDirectory从“ProgramFilesFolder”到“AppDataFolder” 在Excel启动时,用户现在有一个要求安装加载项的对话框。 用户收到的对话框如下所示: 未知发布者 为什么外接程序尚未安装? 尽pipe加载项应该由我的EXE文件安装,但是在这个对话框中,加载项没有被签名,但是EXE被签名了。 我应该签署VSTO文件吗? 我用signTool尝试,不能这样做。 这甚至可能吗?

取消列表后删除Excel ListObject

我在C#中做一个VSTO插件项目。 基本上,我想从数据库检索数据,并把它放在Excel中。 但是,我只是想以简单的范围的格式写入数据,而不保留任何types的绑定到数据源。 为此,我创build一个ListObject并将其数据源设置为填充了数据的数据表。 然后,我调用方法Unlist将表转换回正常范围,他们我试图从工作表中删除listobject,所以我可以使用相同的listobject名称,当我重复此过程。 问题是,当我尝试删除列表对象C#抛出一个错误的索引exception。 这里是代码: Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)Globals.ThisAddIn.Application.ActiveSheet; Worksheet extendedWorksheet = Globals.Factory.GetVstoObject(worksheet); Microsoft.Office.Interop.Excel.Range cell = extendedWorksheet.Application.ActiveCell; Microsoft.Office.Tools.Excel.ListObject listObject; BindingSource bindingSource = new System.Windows.Forms.BindingSource(); DataTable dataTable = new DataTable(); bindingSource.DataSource = dataTable; listObject = extendedWorksheet.Controls.AddListObject(cell, "list1"); listObject.AutoSetDataBoundColumnHeaders = true; listObject.SetDataBinding(bindingSource, ""); listObject.Unlist(); extendedWorksheet.Controls.RemoveAt(0); 我也尝试了一些变化,以删除listobject,但没有一个工作: extendedWorksheet.Controls.Remove("list1'); //or listObject.Delete() //or foreach (ListObject x in extendedWorksheet.Controls) […]

如何触发在Excel中的ListObject绑定更新?

按照如何将ListObject控件添加到工作表中所述,我有一个绑定到DataSet ListObject 。 我想计算每行input时的某些列值。 例: 用A1:D2定义的表格和A2中的光标 在A2中input一个值 点击标签 期望的行为:行在数据集中更新,我可以检测到更改并更新其他列 实际行为:直到光标进入另一行,行才会更新 如何导致表在当前单元格失去焦点时更新DataSet ?

vsto插件为excel 2016年事件没有被解雇

因为几个星期(最后更新?),当我双击浏览器中的xlsx文件,excel启动,但没有事件被激发… 它很容易重现:在visual studio中创build一个vsto excel插件项目 private void ThisAddIn_Startup(object sender, System.EventArgs e) { this.Application.WorkbookOpen += new Excel.AppEvents_WorkbookOpenEventHandler(Application_WorkbookOpen); } private void Application_WorkbookOpen(Excel.Workbook Wb) { MessageBox.Show("ExcelAddin AppEvents_WorkbookOpenEventHandler event fired"); } 在debugging模式下,我设置了以下参数: 启动外部程序:c:… \ excel.exe 命令行参数:xlsx文件名的完整path 如果我启动excel,并用菜单(File / Open)打开文件,则会触发该事件! 感谢帮助!

如何将选项超链接添加到Excel函数参数窗口就像bloomberg的BDH函数?

我开发了一个优秀的UDF。 其中一个UDF参数已知可能的值(A,B,C)。 因此,不要求我所有的用户找出可能的值,我想在excel函数向导中提供一个option1(超链接),就像截图中显示的Bloomberg的BDH函数一样。 我知道我必须以某种方式挂钩到win32 api并覆盖调用函数向导时的调用/窗口。 当我看着SPY ++,我看到有一个插入函数窗口和函数参数窗口 。 我已经将手头的任务分解为四个子任务: 子类窗口“函数参数”bosa_sdm_XL9 将超链接控件添加到该子类窗口。 钩住一个事件,打开另一个控件,该参数的可用选项。 钩住一个事件,在控件closures时将值填充到子类窗口中。 我想我可以使用在线文档分类窗口,但需要项目#2,3,4的帮助。 在stackoverflow / msdn上找不到任何好的代码示例或启动器。 有没有人完成这个或类似的任务? 请帮忙。

在现有的Excel工作表的开头插入单元格区域?

我有一个工作表,有5行和3列。 我把这张表复印一份: activeSheet.Copy(Type.Missing, activeSheet); var outputSheetIndex = activeSheet.Index + 1; var outputSheet = (Worksheet)application.Sheets[outputSheetIndex]; 以上将表单复制到另一个表单中。 我现在想要在outputSheet中插入另一个范围,并将outputSheet列移到右侧。 我不确定在哪个范围对象上应用Insert方法。 我试图创build一个新的范围插入在开始,但是这不起作用: var startCell = outputSheet.Cells[1, 1]; var endCell = outputSheet.Cells[output.Count(), properties.Length + 1]; var writeRange = outputSheet.Range[startCell, endCell]; writeRange.Insert(XlInsertShiftDirection.xlShiftToRight); 当我插入writeRange时,我想把现有的数据范围向右移动。

使用VSTO在Excel中更新绑定的数据表很慢

我有一个Excel VSTO应用程序在内存中存储一​​个大的数据表,并将其中的一部分绑定到表。 用户可以更改他们select显示的字段,并定期进行批量更新。 大规模更新循环通过数据表更新几个字段。 这个更新过程似乎很慢(即更新40个奇数logging可能需要20秒)。 数据表是相当大的(10000行×450列),绑定到一个隐藏表和一个较小的视图(20个字段)绑定到一个可见的工作表。 数据表的所有更新都是在代码中完成的。 ProductRow = dt.Rows.Find(foundRows(i)("Primary Key")) If IsNothing(ProductRow) = False Then ProductRow("DECISION") = "Some Value" Updated += 1 End If 我怀疑它只是大量的数据绑定到工作表,这减慢了这个过程,但是任何提高速度的build议都是非常受欢迎的。

.Net本地化问题

我目前正在使用VSTO(最新版本+ sp1)和.net 3.5构build一个Excel 2007加载项 代码只需使用Top和Left属性将图表放在一个图表中,并将其存储在XML文件中。 我所面临的问题是,当使用Vista Ultimate + Excel 2007 +英文环境生成xml时,代码完美地工作。 当我将其移到Windows Server 2003 + Excel 2007 +法语环境时,当我尝试设置Top和Left属性时,它会崩溃。 进一步,它总是返回4在服务器上的两个值。 我曾尝试使用区域和语言设置,但至今没有任何改变。 我也尝试将值存储为整数而不是由VSTO对象返回的浮点值。 如果某人有某种想法,可能会出错,请指出正确的方向。 我将编辑一次,追溯更多…

无法加载Excel 2003加载项

我试图开发一个使用Visual Studio 2008(SP1)的Excel 2003外接程序。我没有添加Visual Studio添加的样板代码。 当我在VS中运行应用程序时,会加载Excel,但加载项本身不起作用。 “COM加载项”窗口列出加载项,但未选中。 “加载行为”读取为“未加载。加载COM加载项期间发生运行时错误”。 即使我已经启用debugging>例外下的所有选项,VS在加载时无法捕获exception。 我也尝试设置VSTO_SUPPRESSDISPLAYALERTS环境variables,如MSDN文章中提到的。令人惊讶的是,也没有显示任何消息。 我在Windows XP下运行Office 2003(SP3)。如果有人能帮助我,那将会很棒。 谢谢。

Excel加载项安装和设置.Net安全/信任

我的环境是针对Excel 2003的VS2005 C#。当我看到在解决scheme中为我创build了一个.msi项目时,我对这个加载项的安装程序给了我一点信心。 不用说,这是整个项目中最棘手的部分,我完全停留在如何在安装过程中将Full Trust部署和设置为我的加载项。 我遵循http://msdn.microsoft.com/en-us/library/aa537179(office.11​​).aspx – “使用Windows Installer为Office解决scheme部署Visual Studio 2005工具:演练(第2部分2)“。 该文件中似乎有一些不准确的地方,但实际上是小事。 我正在使用VSTO 2005工具示例项目来将.net安全性设置为.msi的自定义操作。 这似乎工作,但目前不允许我的插件加载,除非我用.Net框架configuration工具手动更改一些东西。 安装完成后,我会看到Excel Addins的相应registry项以及0x03的相应LoadBehavior。 从“控制面板”中的“.Net 2.0 Frameworkconfiguration”小程序中,我看到有2个节点添加到我的运行时安全策略中。 运行时安全策略 – >用户 – >代码组 – > All_Code – > MyCodeGroup – > MyCodeGroupChild。 MyCodeGroup设置被设置为NONE的URLvalidation和policylevel。 MyCodeGroup子设置是STRONG NAME,并且与我为我的加载项DLL设置的内容相匹配。 在这个设置中,插件将不会加载。 如果我将“MyCodeGroup”策略从“无”更改为“完全信任”,则可以使用。 (我重置我的registry加载行为从0x02回到0x03)。 任何想法呢? 我在网上找不到很多东西来表明我哪里出错了。