问题标签 [listobject]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
excel - 从命令行应用程序刷新 Excel ListObject
我正在尝试使用命令行应用程序更新由 Excel 插件(示例 Code1)创建的工作簿中托管的 listObject 的信息。
我尝试创建 Excel 实例并访问所有 listObjects,但 GetVstoObject 始终返回空对象。我认为是一个安全问题,但我不知道如何解决它。(示例代码 2)。
我已尝试使用ServerDocuments,但我没有 CachedData,并且无法在应用程序加载项级别使用。有什么建议吗?
提前致谢。
代码1
Code2 参考:Microsoft.Office.Interop.Excel、Microsoft.Office.Tools.Common.v9.0、Microsoft.Office.Tools.Excel.v9.0、Microsoft.Office.Tools.v9.0、Microsoft.VisualStudio.Tools .Applications.Runtime.v9.0,System.Windows.Forms(它需要它¿?)
vba - Excel VBA ListRows.Add 失败
我可能遗漏了一些简单的东西,但 ListRows.Add 让我很伤心。这是功能:
在大多数情况下,这可以正常工作。但是,每当该函数在我的工作表中的某个表上运行时,调用 ListRows.Add 之后的行永远不会执行(至少这是调试器所指示的),并且该行不会被添加到表中。有什么想法/想法吗?
更新:
这是我在发帖后学到的东西。如果我为 Sub 提供存根数据,它可以正常工作。例如:
注意:getTableObject 循环遍历工作表并返回具有匹配名称的 ListObject。
处理调用代码的上下文似乎是一个问题。在失败的情况下,公式(函数调用)已放置在各种工作表的各个单元格中。该公式包含对其他单元格中数据的引用。当其他单元格中的数据发生变化时,将调用公式,然后调用上面给出的 addEmployee Sub。这是失败的情况。
c# - .Net C# Microsoft.Office.Interop.Excel ListObject 异步刷新数据源
我在 C# 中设置了一个消息传递应用程序,并将异步接收到的消息添加到列表中。我只使用 Microsoft.Office.Interop.Excel 命名空间而不是 VSTO 扩展,因此面临 listobject 的问题。
我想要做的是使用下面的方法创建一个列表对象,并使用一个计时器对象写入 excel 电子表格。
在主程序中,在启动消息传递部分后,我将获取列表对象并将其传递给计时器以更新电子表格。
当计时器对象每秒调用 DoSomething 方法时,我该怎么做?
在 VSTO 中,我将执行以下操作:
如何在没有 VSTO 扩展的情况下执行以下操作?
excel - VSTO Excel:重新打开文件时恢复 ListObject 数据源
我正在开发一个 Excel 2010 模板项目。在我的模板中,我有许多带有静态ListObject
控件的工作表。为了初始化 my ListObject
,我绑定 aBindingList<MyCustomType>
以便它为我的每个MyCustomType
公共属性生成一个列。这真的很方便,因为当用户在 中的某些行时ListObject
,它会自动填满我的BindingList
实例。我在 Excel 功能区中添加了一个按钮,以便程序可以通过 EDM 验证和提交这些行。这就是我将数据绑定到我的一张 Excel 工作表的启动事件处理程序中的 ListObject 的方式。
现在我的问题是这个模板的用户很可能会在许多会话中输入这些行。这意味着他将输入数据、保存文件、关闭它、重新打开它、输入一些新行并最终在他认为完成时尝试提交这些行。我注意到,当重新打开从模板创建的 Excel 文件时,我的 ListObject 控件的 DataSource 属性为空。这意味着我无法将数据ListObject
从BindingList<MyCustomType>
. 我一直在搜索,我发现没有自动的方法来做到这一点,我真的不想制作一段代码来爬过所有的列来重新创建我的MyCustomType
实例。在一个理想的世界里,我会这样做。
我一直在对此进行大量研究,但我无法找到解决方案,所以我希望你们中的一些人可以帮助我解决这个问题。
谢谢。
performance - Excel 列表对象 VBA 性能错误?
我在使用列表对象(又名 Excel 表)的 excel 应用程序上遇到性能问题。我怀疑这可能是一个错误,但尽管我用谷歌搜索我找不到它的任何参考。我已经为我的应用程序开发了一个解决方法,但我感兴趣的是是否有人可以深入了解为什么会发生这种情况。
注意:我在 Windows Vista 上使用 Excel 2007。设置如下:我有一个将数据保存在列表对象中的电子表格,其中包含可以通过命令按钮启动的 VBA 代码;此代码可以对工作表上的任意数量的单元格进行多次编辑,因此 Excel 的计算模式在任何编辑之前设置为手动。
我遇到的问题是,如果当前活动的单元格在列表对象中,那么将计算模式设置为手动似乎没有任何效果。因此,如果用户碰巧在同一个实例中打开了一个繁重的计算工作簿,那么 VBA 代码会运行得很慢。实际上,我不得不将我的应用程序拆开才能发现这是由活动单元格引起的;我用这个场景的简单版本创建了一个新工作簿,以确认我的应用程序没有某种损坏。
我一直在用这个做一些测试用例,下面是我发现的结果:
虽然看起来大体上和计算有关,但是计算模式在手动和自动之间切换还是有时间差的……
- 手动 = 7.64 秒
- 自动 = 9.39 秒
手动模式比自动模式快不到 20%。但我的期望是它们或多或少是相同的,考虑到问题似乎是即使在手动模式下也开始计算。
将其与活动单元格不在列表对象上时进行比较,结果大不相同......
- 手动 = 0.14 秒
- 自动 = 3.23 秒
现在,手动运行快了 50 倍,而自动运行显示计算时间不应该超过 3.2 秒!所以现在第一个测试看起来可能在手动模式下运行了两次计算,在自动模式下运行了近 3 次。
再次重复这个测试,这次是在任何单元格中都没有计算公式的情况下,突然它似乎没有那么糟糕了,
- 活动单元格是列表对象,计算是手动 = 0.17 秒
- 活动单元格是列表对象,计算是自动的 = 0.20 秒
- 活动单元格为空,计算为手动 = 0.14 秒
- 活动单元格为空且计算为自动 = 0.18 秒
它仍然较慢,但现在只有 10-20%,使其不明显。但这确实表明该问题必须以某种方式与计算有关,否则它应该花费与第一次测试一样长的时间。
如果有人想创建这些测试以自己查看,设置如下:
- 添加了列表对象的新工作簿(不必链接到任何数据)
- 添加一些需要 excel 一段时间才能计算的公式(我只是重复了 '=1*1' 30,000 次)
- 编写一个快速的 VBA 代码;(i) 循环通过一个简单的单元格编辑数百次,(ii) 并记录所花费的时间
- 然后在更改列表对象和空单元格之间的活动单元格时运行代码
我很想知道是否有人可以解释为什么 Excel 会以这种方式运行,是否是一个错误,或者是否与列表对象有关的某些功能实际上有一些真正的用途?
谢谢,斯图尔特
c# - 将数据绑定与 Excel listobject 一起使用时如何创建查阅列
我正在使用 excel 2010 和 Visual Studio 2010 进行 VSTO 项目。
我已成功将 excel listobject 绑定到 BindingList 集合,并且我正在尝试修改 listobject,以便某些列包含查找下拉列表。此外,我正在尝试配置可以将查找文本转换为查找值(整数)的特定列。
我知道 Excel SharePoint 列表中的构建可以实现这一点。问题是,我们能做到吗?
谢谢
arrays - 使用 VBA 将值插入到 Excel 表中的正确方法是什么?
我需要能够使用 VBA 代码将大量值插入到 excel 中的空表中。到目前为止,代码是这样工作的。
首先,用户在用户表单中输入一个值。然后代码清除表格,然后根据代码中已有的查找条件查找一系列数字。检索到的数据全部包含在单个列中,并像数组一样存储。
从这里开始,我需要将所有值放入表中的某个列(策略#),从而将表行扩展为检索数据集中的行数。(如果需要,我确实已经将计数单独存储为“AC”)我要插入的列标题是“Policy #”。
请记住,在代码的当前时间表中只有一个空白行,我怎样才能正确插入数据?我试过了
但这不起作用。顺便说一下,Als 是值数组。通常要插入数组,我必须插入一个大小相等的范围,这就是我已经将行数作为 AC 的原因。
我也尝试过使用range("commissionstatement").listobject.listrows
,但这也不起作用。
有什么建议吗?我是否需要在表中插入与我添加的数据数量相等的行数,然后才能像这样将数据实际放入其中...
然后插入数据?
如果需要更多信息,请告诉我。谢谢!
excel - 如何使用 Excel 中 ListObject 的范围验证单元格?
我正在尝试使用 ListObject 中的一行中的值来验证单元格(列表类型验证)。当我在验证代码中使用命名范围时,它可以工作;但如果我将命名范围引用替换为ListObject引用,则会引发错误。
您可以使用 ListObject 来验证单元格吗?
这就是我正在做的使用命名范围的工作:
但是,如果我替换 的值Formula1:=
并让它指向一个有效的列表对象,如下所示:
...我收到一个错误。我也尝试过通过 UI 执行此操作,但它不起作用。
您真的不能使用 ListObject 验证单元格吗?
excel - 通过 VBA 在 Excel Listobject/Table 中添加/修改/删除计算列公式
如果我在 Excel 表(即 ListObject)的列中手动输入公式,自动更正会将此公式应用于整个列。
有什么方法可以通过 VBA 控制这种行为,即我可以以某种方式修改/删除/添加这个公式吗?
我知道我可以简单地更改ListObject.ListColumns(1).DataBodyRange
对象的公式 - 但这将覆盖之前输入的任何手动值 - 而在 UI 中更改公式将保持不变......
excel - Excel VBA:如何检查计算列?
如果 Excel 中表的特定列(ListObject)是计算列(如http://office.microsoft.com/en-us/excel-help/use-calculated-columns-在-an-excel-table-HA010342380.aspx 中)?
请注意,计算列不仅会为每一行设置相同的 R1C1 公式,而且还会在添加新行时自动扩展(如果您删除整个数据主体范围然后重新创建一些新行,它甚至会重新填充)。因此,检查具有一致公式的列与检查计算公式不同。
甚至可以计算一列,但是用其他公式或值覆盖其中一行,并保持自动扩展功能。
所以我非常确信这必须是列的某些属性,我只是不确定我可以在哪里通过 VBA 访问它。如果它没有通过 VBA 对象模型公开,是否有一些解决方法来获取此信息?
提前致谢, 卡洛斯
编辑:我对 Excel Office Open XML 文件进行了一些挖掘,结果发现我正在寻找的是xl\tables\table*.xml 文件定义中的<calculatedColumnFormula>
元素。<tableColumn>
有什么方法可以通过 VBA 实现吗?
EDIT2:这是一个示例文件,其中包含我可以提出的测试用例。VBA 应该表示第 1、2 和 3 列是计算列,而第 4 和 5 列不是。