Tag: 加载项

如何使用所有Excels的共享代码创buildVBA加载项?

我正在为多个Excel电子表格编写VBA代码,这些代码将不时与其他人共享。 在某些时候,我发现在我的作品中有很多重复的东西。 所以我想find一种方法来共享Excel加载项中的代码,比如.xla文件。 但是当我试图将包含共享代码的Excel文件保存为.xla文件时,我遇到了一些问题: 将文件保存在默认的加载项文件夹后,该文件不能再被编辑 如果我将.xls文件移动到加载项文件夹以外的文件夹,并直接打开它 – 我不能使用它的类 – 这会导致共享代码的问题 任何想法以灵活和强大的方式创build加载项? 非常感谢您的帮助

在Excel VSTO 2007中格式化为表(TableStyles),错误:一个表不能重叠另一个表

我正在做一个加载项,我试图格式化我的加载项生成的输出,使用格式作为Excel提供的表格表格样式。 您在“主页选项卡” – >“格式化为表格”button上获得的那个button。 我正在使用以下代码: SourceRange.Worksheet.ListObjects.Add(XlListObjectSourceType.xlSrcRange, SourceRange, System.Type.Missing, xlYesNo, System.Type.Missing).Name = TableName; SourceRange.Select(); SourceRange.Worksheet.ListObjects[TableName].TableStyle = TableStyleName; TableStyleName是任何样式名称,如TableStyleMedium17,如果您只是在Excel中hover一个特定的样式,你会得到它。 我的问题是,即使我将SourceRange保持为10列,直到结束的所有列都被选中,并被视为一个表。 因为这个表我在它旁边填充也被认为是生成的第一个表的一部分。因为,这两个表具有相同的列名称,Excel会自动更改所有以下生成的表中的列名称。 另外,因为我生成了2个表格之后的一个循环中的表格,所以我得到这个错误: 一个表不能与另一个表重叠。 PS:我明确提到SourceRange为: var startCell = (Range)worksheet.Cells[startRow, startCol]; var endCell = (Range)worksheet.Cells[endRow, endCol]; var SourceRange = worksheet.get_Range(startCell, endCell); 请提出一条出路。

如何编写一个Excel C加载项函数返回一个string到Excel没有内存泄漏?

我正在使用C ++编写Excel XLL插件,我希望我的函数使用预定义的XLOPER12将string返回给Excel。 正如我所说的,Excel要求函数返回一个指向内存的指针,然后使得浅拷贝消失,而不清除函数中分配的内存。 所以如果我写这样的东西: extern "C" LPXLOPER12 WINAPI strgen() { XLOPER12 res; res.xltype = xltypeString; res.val.str = (XCHAR*)malloc(2*sizeof(XCHAR)); res.val.str[0] = (XCHAR)1; res.val.str[1] = L"X"; return (LPXLOPER12)&xRes; } 但显然这会造成内存泄漏。 有人build议我可以将res声明为静态variables,但我不知道如何初始化它。 所有的build议都欢迎。 最好

在文档级别自定义中引用Windows窗体中的Excel表格

我想我会尝试学习VB.net,并从一些VSTO(VS2012)开始。 我正在尝试使用单独的Windows窗体在其中进行Excel文档自定义(.show on load)。 我可以在加载文档时打开表单。 我发现了很多如何在MSDN上的文档中放置Windows窗体控件的例子(并想出如何做到这一点),但是我在从Windows窗体引用部分Excel文档时遇到了问题。 所以例如在窗体上的主要控制我试图把这个子添加到一个button: Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Try Dim baba As Sheet1 baba.Cells(1, 2).Value = "Llaslmasd" Catch ex As Exception MsgBox(ex.Message) End Try End Sub 我也试过: Dim baba As New Sheet1 和 Dim baba As WorkSheet baba = Sheet1 如果参考表不是共享成员,或者如果我将它分享,那么引用该表的正确方法是什么?我该怎么做? 如果我以编程方式尝试插入来自其他(非合并的工作簿,因此更改图表索引? 对不起,如果我的英文不对,或者我的问题的格式不好,我仍然会通过例子。

获取聚焦细胞中的Excel当前值

我正在开发一个Excel加载项。 我需要从A1单元格获取值,所以我使用这个代码 value = workbook.Worksheets[1].Range["A1:A1"].Value2; 这很好,但如果: – 上一个单元值是“1” – 用户键入“2”,但不按Enter或Tab – 用户激活function区按下button 从此代码示例获得的值2是“1”(以前的值)不是“2”(当前值显示在单元格中,但未validation)。 这在我的情况是错误的,我需要“2”。 我怎样才能解决这个问题? 我试图强制select另一个单元格 Application.ActiveCell.Offset[1, 0].Select(); 要么 Application.ActiveSheet.Range["A2"].Select(); 但没办法..“2”的价值是失去了。 我也尝试从工具栏中的文本区域获得价值(“2”显示在那里),但不知道锄头做!

当从外接程序调用WPF时缓慢Excelclosures

我有一个Excel加载项,在其上调用一个新线程的WPF应用程序的button。 当我closuresExcel没有打开我的WPF应用程序或打开它,然后再次closures后,Excel立即closures,但是,每当我打开应用程序,然后closuresExcel,Excel需要5-10秒closures。 我只是遇到了这些解决scheme,这两者都没有帮助: VSTO运行时更新以解决缓慢关机… 这是一种问题,但提问者的问题结果是不一样的。 我正在运行VS 2010和Excel 2010,所以不应该存在互操作性问题。 有没有人有build议? 线程代码:Private qbdThread As Thread = Nothing Private frmQBD As QBDApplication.MainWindow qbdThread = New Thread(New ParameterizedThreadStart(AddressOf RunQBD)) qbdThread.SetApartmentState(Threading.ApartmentState.STA) qbdThread.Start(TabletType) AddHandler QBDApplication.MainWindow.QBDClose, AddressOf QBDThreadClose Private Sub RunQBD(Optional tabletQBDSelected As String = Nothing) … frmQBD = New QBDApplication.MainWindow(contacts, saveLocation, tabletQBDLocal) frmQBD.Show() frmQBD.Activate() System.Windows.Threading.Dispatcher.Run() End Sub 这个代码在用户closures新线程时运行: Me.Close() System.Windows.Threading.Dispatcher.CurrentDispatcher.InvokeShutdown() 然后在主线程(ThisAddin.vb)上使用以下代码引发一个事件: […]

Office 2010添加自定义选项卡/组包含不需要的命令

我已经inheritance了一个Excel 2010 VSTO,它有一个自己的选项卡下的button来启动一些代码(我也是VS和C#的新手)。 我的问题是当我部署它我得到额外的命令出现在“菜单命令”和“工具栏命令”组; 这些属于其他应用程序有Excel集成,但没有自己的选项卡/组。 我已经在解决scheme中search了对菜单和工具栏的引用,但无法在任何地方看到它们。 我的标签横跨function区是; 文件| 首页| 插入| 页面布局| 公式| 数据| 回顾| 查看| 开发人员| 博伊西工具2(我的插件)| 其他添加1 | 其他添加2 | 其他添加3 | 其他添加4 | 我已经为选项卡和组“Boyce工具2”指定了名称,所以不知道这些其他命令如何到达那里? 是否有可能其他插件只是默认第一个标签不是办公室的MS? Ribbon.Designer.cs namespace ReportFramework { partial class Ribbon : Microsoft.Office.Tools.Ribbon.RibbonBase { /// <summary> /// Required designer variable. /// </summary> private System.ComponentModel.IContainer components = null; public Ribbon() : base(Globals.Factory.GetRibbonFactory()) { […]

VBA – 在Excel项目之间传递variables

我的问题:如何设置在其他Excel项目中声明的variables的值? 背景:我正在从一个不同的Excel项目调用一个私人子(我不知道是否重要,但我感兴趣的子是Excel加载项的一部分)。 在加载项我有: 公共sapEEID作为string Private Sub UpdateLetterTemplate 我能够运行子使用:Application.Run(“'解决scheme添加.xlam'!UpdateLetterTemplate”) 不过,variablessapEEID =“” 运行UpdateLetterTemplate私有子时有没有办法传递“17”作为sapEEID?

防止Excel将UDFpath保存到公式单元格

我正在使用向Excel添加函数的自定义加载项,如UDF1(param1,param2)。 (1)示例调用单元格:= UDF1(param1,param2) 当保存实现UDF()的工作簿1时,Excel会悄悄地将加载项的path添加到UDF()的每个调用中。 这可以在卸载加载项和重新打开工作簿1时看到。 Excel要求更新外部引用,我点击“不要更新”。 (2)新的单元格内容:='\ … \ user \ Desktop \ Addin1'!UDF1(param1,param2) 如何在保存工作簿时防止Excel将path保存到加载项? 我希望新的单元格内容(2)匹配原始内容(1)。 (当不同的人使用分别安装在他们计算机的不同位置的相同的加载项时,这是特别讨厌的,因为每次工作簿是每个单元格时都要删除'\ ……!'path被另一个用户打开。) 编辑: 从Excel公式和http://www.jkp-ads.com/Articles/FixLinks2UDF.asp UDF中删除AddInpath是不是我所期待的,因为build议的“解决scheme”是变通办法。

Excel VBA不能识别手动打开的.xlam加载项

我有一个不能在Application.AddInsfind的Excel加载项。 我手动打开加载项通过转到文件 – >打开 – >浏览到addin.xlam 。 加载项是否需要以编程方式添加才能显示在Application.AddIns ? 编辑 @Fadi 这些打印function中没有看到我的插件。 在第一个,它只是打印我当前的工作簿的名称,这是全部。 第二个成功地打印出我的其他10个已经以编程方式添加的加载项,但不是手动添加的。 Sub MsgWorkbooks() Dim s As String For Each wb In Workbooks s = s + app.Name Next wb MsgBox s End Sub Sub MsgAddIns() Dim s As String For Each app In Application.AddIns s = s + app.Name Next app MsgBox […]