gpt4 book ai didi

vba - 工作簿加载完成后运行子例程吗?

转载 作者:行者123 更新时间:2023-12-03 02:48:11 25 4
gpt4 key购买 nike

范围

我正在致力于通过 C# 自动生成一些 Excel 报告。问题是,当谈到“功能”时,我的支持库 EPPlus并没有涵盖全部。

解决方案

由于我知道 VBA 支持我在 Excel 文件上执行的所有操作,因此我决定使用它来完成我在 C# 中无法完成的所有操作。这是我当前生成报告的流程

1 - 设置一个"template"Excel 文件(包含我需要的所有 VBA 代码,配置到 Workbook_Open 事件中,以便在用户打开 Excel 文档时它们将立即运行)

2 - 运行我的 C# 代码来打开模板、填充数据、生成数据透视表、图表等

3 - 使用不同的名称保存,以避免覆盖模板文件

通过这样做,我最终得到了一份报告,一旦有人打开它,就可以“触发”我的宏。该宏将执行诸如创建数据透视图、自动选择数据透视表过滤器等操作。没什么太花哨的。

问题:

当我手动打开 Excel 文件时,宏不起作用,引发此错误:

Funky Excel Error

在这行代码

Not a fancy line of code

但是,当我等待文档停止加载,然后手动执行宏时,它会按预期工作。

我认为原因可能与 Workbook_Open 事件触发后数据尚未“准备好”读取有关。

最佳答案

尝试Workbook_Open之后发生的Workbook_Activate事件,可以引用数据透视表等。

否则,如果需要造成延迟,可以使用OnTime方法:

Application.OnTime Now + TimeValue("00:00:02"), "my_Procedure"

将其放入 Open 事件中,它将在 2 秒延迟后运行名为 my_Procedure 的过程。

关于vba - 工作簿加载完成后运行子例程吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23964306/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com