Tag: excel addins

在“另存为”function后禁用VBA模块

当模板打开时,它运行一个Auto_open模块。 Sub Auto_Open() SaveAsUserForm.Show End Sub 然后,这将提出一个用户表单,说请保存为一个OK命令button。 点击确定后,将运行此代码。 Private Sub SaveAs_Click() Dim bFileSaveAs As Boolean bFileSaveAs = Application.Dialogs(xlDialogSaveAs).Show If Not bFileSaveAs Then Unload Me If bFileSaveAs Then Dim x As Object Set x = Application.VBE.ActiveVBProject.VBComponents x.Remove VBComponent:=x.Item("Auto_Open") Unload Me End Sub 这将删除Auto_Open模块,以便保存为用户窗体不会在刚刚保存的新文件中popup。 但是,我只想要它被禁用,如果使用另存为function(都使用自动打开模块或在文件选项卡 我也需要它,所以如果用户取消该框将完全禁用保存function,只允许保存为。 但是,如果使用保存function,它要求input密码,所以我可以编辑模板。 所以,基本上当用户打开模板时,他不能做任何改变,除非他另存为第一,然后一旦它的存储为和文件名更改它将禁用Auto_Open模块,因此它不会要求保存,因为每次新文件打开。

可以加载项通信? 连接加载项/加载项依赖项

可以加载项通信? 我有一个Excel添加与API通信。 在该插件中,可以将XML打包的数据作为string接受,并将API的路由作为URL / I作为string接受POST数据: Function PostApiXmlToXml(XML as String, URL as String) as String 'Post to Url that XML data 'PostApiXmlToXml = the XML response End Function 问题是有很多不同的路线和function需要。 并不是所有的用户都需要/被授权使用所有的路由。 我要么让每个人都可以访问每个function,但是如果他们试图发送到一个他们没有访问它将会以未经授权的方式回应。 或者有一种方法为连接到主通信添加的每个function添加? 例如,这个单独的加载项具有依赖于第一个的函数: Function CalculateSomething(x as double, y as double, z as double) as double Xml = "<x>" + x + "</x>" &_ "<y>" + y […]

设置范围值只设置第一个值

要设置一系列的Excel值,我使用下面的代码: int[] values = new int[] {1, 2, 3}; String rangeStart = "A1"; String rangeEnd = "A3"; Microsoft.Office.Interop.Excel.Workbook objBook; Microsoft.Office.Interop.Excel.Sheets objSheets; Microsoft.Office.Interop.Excel._Worksheet workSheet; objBook = (Microsoft.Office.Interop.Excel.Workbook)Globals.ThisAddIn.Application.ActiveWorkbook; objSheets = objBook.Worksheets; workSheet = (Microsoft.Office.Interop.Excel.Worksheet)objBook.ActiveSheet; workSheet.Range[rangeStart, rangeEnd].Value = values; 但单元格只包含数组的第一个值。 任何想法如何将每个数组值写入字段?

Excel VBA函数名称parsing,加载项vs本地模块

考虑以下情况。 我有一个名为“X”的Excel加载项,其中包含一个名为“Z”的函数。 通过“文件”>“选项”>“加载项”在Excel中启用加载项“X”。 我打开一个启用macros的Excel工作簿,其中包含名为“A”的模块,其中包含名为“Z”的函数。 (我将称之为'Z'的'本地'版本。) 问题1)如果我从工作表单元格'= Z()'调用函数'Z',哪个函数默认调用'Z'? 加载项“Z”或本地“Z”? (如果有人可以指向我在Excel VBA中描述名称范围和名称parsing的文档,那将是值得赞赏的。) 问题2)在工作表单元格中,是否有任何语法可以用来明确地调用一个或另一个函数“Z”(即“本地”Z或加载项“Z”)? 问题3)在启用macros的工作簿中,当工作表单元格调用函数“= Z()”时,Excel会默认调用“Z”的插件版本。 如果我断开“Z”(Excel RIBBON栏>数据选项卡>连接库>编辑链接button)加载项版本的链接,Excel将打破所有调用'= Z()'=> '#名称?'。 有没有办法让Excel中断到加载项“Z”的链接,而不是调用“= Z()”的所有工作表单元格而是调用本地的“Z”?

此工作簿当前由另一个工作簿引用,不能closures

使用Workbook.Close()方法closures“加载项”工作簿(.xla)时出现此错误: error 1004: "This workbook is currently referenced by another workbook and cannot be closed." 我closures了从VBA编辑器可见的所有其他工作簿。 现在,“插件”工作簿是唯一打开的工作簿,但仍然出现与ThisWorkbook.Close()的错误。 使用“停止button”在VBA编辑器中重置项目没有帮助。 为什么Excel认为这个工作簿目前被另一个工作簿引用? (编辑:没有其他的工作簿,我把它们全部closures了,此时只有一个工作簿打开,VBA编辑器中只有一个VBA工程出现) 似乎有某种参考被泄露。 有没有办法来避免这个错误?

ListObject在添加后包含额外的标头

我从D3单元格开始在工作表上添加一个新的ListObject,然后创build列并使用XMLMap绑定它们。 这是我的代码: Excel.Worksheet sheet = _workbook.Sheets["Data1"]; sheet.Activate(); sheet.get_Range("D3").Select(); var xmlMap = _workbook .XmlMaps .Add(collectionDatablock.GetSchema(), NetworkTree.RootName); xmlMap.Name = collectionDatablock.Name; var listObject = sheet .ListObjects .Cast<Excel.ListObject>() .SingleOrDefault(l => l.Name == "ListName"); listObject?.Delete(); listObject = sheet.ListObjects.Add(); listObject.Name = "ListName"; var column = listObject .ListColumns .Cast<Excel.ListColumn>() .First(); SetColumn(column, xmlMap, "Col1", "/Root/Region/@UniqueName"); var newColumn = listObject.ListColumns.Add(); SetColumn(newColumn, xmlMap, f, solution, […]

办公室js条件格式

我目前正试图使用​​Office JS API 1.6在Excel中实现条件格式。我已经写了下面的代码来实现文本比较格式。 function textComparisonFormatting() { // Run a batch operation against the Excel object model Excel.run(function (ctx) { // Create a proxy object for the active worksheet var sheet = ctx.workbook.worksheets.getActiveWorksheet(); //Queue a command to write the sample data to the specified range //in the worksheet and bold the header row var range […]

使用office.js隐藏excel工作簿中的行

我们正在使用office.js构build一个excel插件。 我们想要隐藏一系列的行。 我检查了Excel的Javascript API文档 。 我没有find任何解决scheme。 有人可以帮助这个。

用office-js删除excel表中的行

我在我的添加ajax调用它应该在Excel中创build或更新表。 如果表已经存在,它应该删除行并添加新的结果。 当在循环中删除行时,它正在删除一些行,然后我得到以下错误: Debug info: {"code":"InvalidArgument","message":"The argument is invalid or missing or has an incorrect format.","errorLocation":"TableRowCollection.getItemAt"} 我在我的Excel Web插件中的ajax调用如下所示: $.ajax({ //…. }).done(function (data) { Excel.run(function (ctx) { var odataTable = ctx.workbook.tables.getItemOrNullObject("odataTable"); //rows items are not available at this point, that is why we need to load them and sync the context odataTable.rows.load(); return ctx.sync().then(function () { […]

如何使XLAM UDF调用可移植?

看来,当我在XLAM文件中调用UDF时,XLAM文件的path被embedded到电子表格中。 当我从另一台机器(它安装了相同的XLAM加载项,只是安装到不同的path)打开电子表格时,Excel会抱怨“此工作簿包含指向其他数据源的链接…”这似乎不是XLL中的UDF问题。 有没有解决的办法?