Tag: excel addins

修剪工作簿中的所有单元格(VBA)

我已经试图添加function到一个Excel的插件,一直在发展,在使用单元格的末尾修剪的领先空间,甚至可能parsing文本,我需要这样做的原因是简单地把它变成一个超链接我已经工作,但部分罚款。 这是我迄今为止所尝试的,我已经修剪active.worksheet是在哪个是好的,但我不知道如何: 修剪在整个工作簿中使用的每个单元格。 如果可能的话也parsing文本 这是我在修整整个工作簿的尝试,其简单的我只知道它,我只是不知道: Sub DoTrim(Wb As Workbook) Dim cell As Range Dim str As String Dim nAscii As Integer Dim wsh As Worksheet For Each wsh In Worksheets With wsh.UsedRange For Each cell In ActiveSheet.UsedRange str = Trim(cell) If Len(str) > 0 Then nAscii = Asc(Left(str, 1)) If nAscii < 33 Or nAscii […]

Excel添加编程

我想了解使用C#编程的Excel中的增加。 对于这样的项目,有一个名为ThisAddIn.cs的文件,它处理所有像WorkBookOpen,WorkBookClose等事件。处理这种事件的代码就像这样 – this.Application.WorkbookOpen += new Excel.AppEvents_WorkbookOpenEventHandler(Application_WorkbookOpen); 这看起来很直接,但我不明白为什么它使用+ =符号分配,而不是只是=符号。 在这种types的赋值中,+ =符号表示什么。 这是与C#或特定于AddIn开发有关的东西。 我对C#也很新。 任何帮助,将不胜感激。 谢谢。

使用VBA更改数据透视表filter

我有一个数据透视表,其中包含“CoBdate”字段,如图所示。 我正在尝试创build一个macros,根据用户input自动更改date。 我写了下面的macros代码。 但是它显示了错误: 无法获取PivotTable类的PivotFields属性 谁能帮我这个? 注意:假定date格式不是问题 码: Sub My_macro() Dim num as String num = InputBox(Prompt:="Date", Title:="ENTER DATE") Sheets("Sheet1").PivotTables("PivotTable1") _ .PivotFields("CoB Date").CurrentPage = num End Sub

parsing大型Excel文件列表失败

这是一个C#/ VSTO程序。 我一直在做一个数据捕获项目。 范围基本上是“处理各种第三方公司发送的Excel文件”。 实际上,这意味着: 通过search方法find包含我想要的数据的列。 从工作簿中获取数据 清理数据,运行一些计算等 将清理的数据输出到新的工作簿中 我写的程序对于中小型数据集非常有用,大约有25个工作簿,总共有大约1000行相关数据。 我从这些工作簿中抓取了7列数据。 我有一个边缘案例,有时候我需要运行一个更大的数据集,大约50个工作簿,共有约8000行相关数据(可能还有2000个重复数据,我也必须删除)。 我目前正在通过一个Parallel.ForEach循环里面的文件列表,我打开一个new Excel.Application()处理每个文件与多个ActiveSheet s。 在较小的数据集上,并行处理的运行速度要比顺序处理的要快得多。 但是在更大的数据集上,我似乎碰壁了。 我开始收到消息: Microsoft Excel is waiting for another application to complete an OLE action ,最终它只是失败。 切换回顺序foreach确实允许程序完成,但它只是磨合 – 从1至3分钟的平行中等规模的数据集到20分钟以上的连续大型数据集。 如果我把ParallelOptions.MaxDegreeOfParallelism设置为10,它会完成这个循环,但是仍然需要15分钟。 如果我将它设置为15,则失败。 如果我不需要,我也不喜欢弄乱TPL设置。 我也尝试过插入一个Thread.Sleep来手动减慢速度,但是这只会让失败发生。 我closures工作簿,退出应用程序,然后将GC.WaitForPendingFinalizers到每个循环结束时的Excel对象和GC.Collect和GC.WaitForPendingFinalizers 。 我现在的想法是: 将列表分成两半,分别运行 并行打开一些new Excel.Application() ,但是在该Excel实例内依次运行一个文件列表(有点像#1,但使用不同的path) 按文件大小分开列表,并独立/按顺序运行一小组非常大的文件,像以前一样运行其余的文件 我希望得到一些帮助: 关于如何确保我的记忆被清除的build议(也许Process.Id在所有的开始和结束都被扭曲了?) 关于订购一个并行stream程的build议 – 我想知道如果我能把这个“大”的人放在第一位,这将使长期运行的stream程更加稳定。 我一直在看: http : //reedcopsey.com/2010/01/26/parallelism-in-net-part-5-partitioning-of-work/ […]

为所有的Excel版本构build一个加载项和UDF

一个数据提供者想要开发一个Excel加载项,这些都是要求: 1)它可以安装在桌面上。 它在function区中添加了一个菜单和button,还提供了一些特定的function(获取实时数据,如彭博function)。 2)插件应该在Excel 2007,2010,2013和2016中工作。 问题是应该使用哪种技术来创build这个加载项。 这是我的一些想法: 1)Excel的JavaScript API不适用,因为它不适用于Excel 2007,2010。 2)VSTO。 有谁知道VSTO插件是否适用于Excel 2013和2016? ; 是否有可能build立一个适用于所有Excel 2007,2010,2013和2016的VSTO加载项? 3)Excel的C API。 看来C的Excel for Excel是用来构buildXLL的。 有谁知道如果Excel的C API可以build立菜单和button?

如何创build读取自定义数据的Excel加载项?

我一直负责为Excel 2007创build一个插件,用于从自定义数据源读取数据。 我已经有了读取数据的代码。 它用C#编写并返回对象。 这是银行系统,我不能直接访问数据。 用户ID,密码和硬件生成密钥必须提供给C#DLL以获取最新数据。 我的老板希望数据每分钟自动更新一次,或者使用Excel提供的刷新function手动更新。 所以我需要使数据显示在Excel中,就像它来自标准数据库连接一样。 我已经四处寻找一个起点,但我正在努力寻找一些信息,这将有助于这个非常具体的要求。 谁能帮忙?

寻找免费的方式来开发使用IronPython的Excel加载项?

我不太了解VSTO或VSTA,但是我认为你需要Visual Studio的完整版本才能使用其中之一。 我无法说服我的老板给我们买这个,但我想在IronPython中开发Excel插件。 我已经看了几个教程,向您展示如何使用IronPython与Excel进行交互,但我找不到有关开发插件的信息。 你能推荐任何资源吗? 我唯一的select做一个COM插件? 如果是这样,有没有人知道这个使用IronPython的例子? 我很抱歉地说,我不能与任何包括花钱的select一起去。 我现在有免费的Visual Studio Shell和IronPython for visual studio安装程序。

以编程方式保存Excel加载项

我有一个用户偶尔更新的工作表,用于制作一个加载项(.XLAM)。 加载项位于networking共享上,并且用户链接到它。 我正在寻找使用户能够轻松更新此加载项(确保它被标记为只读) 我已经在这里看到了Ken Puls的关于部署Excel加载项的文章,但他使用的.SaveCopyAs方法似乎不能接受文件types。 .SaveAs方法,但是当这个尝试了,我得到一个消息说,文件格式或扩展名是无效的,我已经尝试.XLAM和.XLA如下。 DeployPath = "C:\Menu.xlam" .SaveAs Filename:=DeployPath, ReadOnlyRecommended:=True, FileFormat:=xlOpenXMLAddIn 任何在这方面的帮助将不胜感激。

Excel自定义任务窗格不显示

我在一个excel VSTO插件中显示一个自定义的任务窗格,我正在构build它,并显示为: var ctrl = new CellTaskPane(); var pane = CustomTaskPanes.Add(ctrl, "Custom Sheet"); pane.DockPosition = Office.MsoCTPDockPosition.msoCTPDockPositionRight; pane.DockPositionRestrict = Office.MsoCTPDockPositionRestrict.msoCTPDockPositionRestrictNoChange; pane.Visible = true; 这是在ThisAddin.cs文件中完成的,它在我的机器上工作得很好,都在debugging会话和通过点击一次安装程序安装的插件中​​。 但是,将加载项安装到同事的机器上certificate是麻烦的。 加载项正在运行,上下文菜单/function区正常工作,但窗格只是拒绝显示。 在function区上有一个切换button,可以切换窗格上的Visible属性,甚至可以单击该button不会强制窗格显示。 任何帮助,将不胜感激,谷歌certificate这一点是无用的。 谢谢。 我应该提到, CellTaskPane只是一个UserControl按照MSDN上的文档: http : //msdn.microsoft.com/en-us/library/aa942846.aspx

Excel:需要VBAmacros的Power Query插件加载

该场景是Windows Server 2012 R2,64位; Excel 2010,32位。 许多用户,其中只有一些用户具有pipe理权限。 我从内置的pipe理员安装了Power Query。 无需询问任何内容,为所有用户安装加载项; 我的意思是它的设置可能在HKLM下的registry键中find,而不是HKCU。 关键是 HKEY_LOCAL_MACHINE – > SOFTWARE – > Wow6432Node – > Microsoft – > Office – > Excel – > AddIns – > Microsoft.Mashup.Client.Excel 和相关的价值是 LoadBehavior(REG_DWORD) 现在只有less数用户确实需要Power Query。 我不希望它为每个人加载,每次启动Excel。 我为LoadBehavior值尝试了一些不同的设置(请参阅此链接)。 我发现以下内容: 如果LoadBehavior = 2,加载项不加载任何用户,没办法。 如果LoadBehavior = 3,则为所有用户加载加载项。 但是,如果为特定用户(在registry中)创build特定的密钥,则用户可以禁用Excel中的加载项。 例如,在HKEY_CURRENT_USER中,密钥的path是: 软件 – > Microsoft – > […]