问题标签 [excel-automation]

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.

0 投票
1 回答
371 浏览

vb.net - 从 VB.NET 应用程序调用 Excel 时,如何让 Excel 出现在应用程序前面?

我有一个 VB.NET 应用程序,它使用 Microsoft.Office.Interop.Excel 简单地打开电子表格,将一些数据输入其中,刷新数据透视表中的数据,然后向用户展示电子表格。

代码非常简单(未显示错误处理):

运行此代码时会发生什么情况,Excel 在调用应用程序后面打开,因为我们正在刷新数据连接,所以在调用应用程序后面也显示了小的 Excel“SQL Server 登录”对话框,因此用户需要 ALT +TAB 到 Excel 或单击任务栏中的 Excel - 对用户来说都不是很好的体验。我们希望登录对话框出现在调用应用程序的前面。

谁能建议如何实现这一目标?我尝试将 Visible 和 UserControl 属性的设置移到 RefreshAll 之后,但这没有任何区别。

干杯,

克里斯。

0 投票
1 回答
5700 浏览

vba - 使用 VBA 自动单击消息框

我正在为我公司的插件自动化测试用例。

在其中一个测试用例中,在尝试关闭工作簿时将工作簿保存在本地计算机上后,我需要单击“是”-将编辑的数据保存在我们的数据库中,“否”-放弃编辑或“取消”-只是关闭消息框。

我曾尝试使用 sendKeys 但这对我不起作用。

例如:为了通过我的 VBA 代码单击“否”,我尝试发送选项卡并输入如下键:

我尝试了各种时间值仍然没有取得任何成功。如果有人可以帮助我,我会很高兴。

提前致谢!:)

更新:截至目前,我一直在这样做:

但是有什么方法可以获取消息框的窗口对象引用吗?或者无论如何要坚持工作流程:编辑工作簿->保存->尝试关闭->选择放弃/提交对数据库的更改?

注意:通过放弃/提交对数据库的更改,我的意思是数据得到更新的服务器。Excel 只是用户的一个界面。我不希望只保存 excel,但在服务器上调用丢弃/保存更改的操作也是如此......

0 投票
1 回答
424 浏览

vba - 在 VBA 中检查条件格式的可选属性时出错

我写了两个 VBA 子程序:

1) 设置条件格式(运算符、公式1和公式2可选)

2) 检查工作表上的条件格式 (CF) 并打印每个 CF 的属性:

现在,当我想设置条件格式时,例如,“值大于 2 的单元格的单元格颜色应为 RGB(198,239,206),字体为 RGB(255,255,0)”,方法是调用函数

If IsMissing(cellRange.FormatConditions(i).Formula2)在 checkConditionalFormattingsOnSheet 中遇到错误:

错误:应用程序定义或对象定义的错误 HelpContext:1000095,ErrorId:1004

我尝试了其他选项,例如“Is Nothing”、“IsNull()”以及将 Formula2 的参数分别传递为 Nothing 和 Null,但没有任何运气!

提前感谢您的时间和耐心!:)

0 投票
2 回答
760 浏览

visual-foxpro - excel关闭特定工作表

我编写了一个从 excel 生成报告的 foxpro 程序。在最后的过程中,程序生成了两(2)个excel。我创建了一个新工作簿并将两个输出 excel 表复制到新工作簿中。如何关闭这两个excel文件?

我的代码

0 投票
1 回答
5233 浏览

excel - 安装我的插件后在 Excel 中使用“1”参数调用“打开”的异常:...

我一直在尝试自动化 excel 自动化,将我们公司的插件安装在 excel 中,然后加载库文件(包含库宏子例程和函数的 library.xlsm)。在每次测试之后,我加载相应的 test.xlsm 文件并执行宏。所有这一切,我正在使用 powershell (V3)。我的脚本在一台机器上被调用并在另一台远程机器上执行。

这就是我安装插件的方式:

PS:我正在添加 .dll 文件,因为宏中的辅助函数调用了我的 C# 代码。

但是,在打开任何这些 xlsm 文件时,我收到以下错误:

使用“1”参数调用“打开”的异常:“Microsoft Excel 无法访问文件 'D:\ABC\XYZ\workspace\library.xlsm'。可能的原因有多种:文件名或路径不存在。该文件正被另一个程序使用。您尝试保存的工作簿与当前打开的工作簿同名。" 在 C:\Users\Serviceadmin\AppData\Local\Temp\hudson.ps1:94 char:3 + $libraryBook = $excel.workbooks.open("$xlLibraryPath\$xlLibraryFileName"); + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : ComMethodTargetInvocation

尽管文件的路径正确,但仍出现上述错误。这就是我使用 powershell 打开文件的方式:

我已经验证了以下内容:
1. Excel 安装在所需的机器上 - 是的,Excel 2013
2. xlsm 文件的路径 - 全部存在
3. 插件安装成功

有什么我想念的吗?

提前致谢!:)

0 投票
1 回答
7106 浏览

python - Python - 将不同的excel文件表保存为单独的excel文件

新手:我有一个 Excel 文件,其中有 100 多个不同的表格。每张表包含几个表格和图表。

我希望将每张工作表保存为一个新的 Excel 文件。

我尝试了许多 python 代码,但没有一个有效。

请在这方面提供帮助。谢谢!

编辑1:针对评论,这是我尝试过的:

准确地说,问题在于复制表格和图表。

0 投票
1 回答
121 浏览

c++ - 如何前向声明 _com_ptr_t 指针?

我想创建一个库来包装 Excel 自动化并仅公开它的一些巨大功能。我正在使用#import 机制来处理 Excel 的 COM,所以现在我有:

这是在一个静态库项目中,我在我的程序中使用它就很好。

问题是,我想向图书馆的用户“隐藏”它是如何实现的。未来的实施可能会发生变化。此外,在 .h 文件中进行导入会将所有 COM 接口暴露给库的用户,我不希望他们(包括我未来的自己)滥用它。

所以我想做一些类似 PImpl 成语的事情,但我至少需要前向声明 m_app,我不知道该怎么做。

那么,有没有办法转发声明像 Excel::_ApplicationPtr 这样的 _com_ptr_t 指针?还是有更好的方法来做我想做的事情?

0 投票
1 回答
808 浏览

c# - 如何删除 Auto Filter 之后的可见行,不包括标题行?

在 Excel 互操作中,设置 a 后Range.Autofilter(),我需要删除除第一行之外的所有可见行。因为第一行是工作表的标题行。谢谢 。

0 投票
1 回答
1279 浏览

excel - 在 Delphi 中检测 Excel 的版本

我目前正在使用以下代码检查用户计算机上是否存在 Excel 自动化库:

这一直运行良好,直到一个用户只有 Excel 2003。上面的代码说他有 Excel,但是我的 Excel 自动化对他不起作用,我怀疑它也不适用于 Excel 2003 之前的版本。

如何检查安装的 Excel 版本是否为 2007 或更高版本?


根据大卫的回答,我最终把它放在 if ExcelExists 语句之后,它似乎可以完成这项工作:

版本 12 是 Office 2007。

0 投票
1 回答
1261 浏览

c# - Visual Studio C# Properties.Settings.Default 问题

我在这里遇到的问题是我正在为 Excel 构建一个组合的 COM 和自动化插件。当尝试访问我创建的自动化插件类中的 Properties.Settings.Default 时,通过的值是我设置为项目默认值的值,即使 COM 插件返回已通过配置表单保存的值.

所有类都在同一个项目和同一个命名空间下,我的配置表单、COM 插件和功能区的类文件都能够访问更新后的 Properties.Settings.Default 值。我的自动化加载项和一个静态类(处理所有繁重的工作)无法访问更新的值。

COM 插件:

丝带:

形式:

自动化:

最后是静态类:

我能想到的只是以某种方式创建了 2 个或更多设置实例。如果有人对如何解决这个问题有任何想法,那就太好了。

编辑:再玩一点,似乎 COM 加载项在加载时只看到保存的值,然后看到原始值。功能区可以一直看到设置。

编辑 2:已解决并将答案放入以供将来参考,一旦 2 天限制结束,将标记为答案。