Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 工作簿加载完成后是否运行子例程?_Vba_Excel - Fatal编程技术网

Vba 工作簿加载完成后是否运行子例程?

Vba 工作簿加载完成后是否运行子例程?,vba,excel,Vba,Excel,范围 我正在通过C#自动生成一些Excel报告。问题是,当谈到“功能”时,我的支持库并没有涵盖所有内容 解决方案 因为我知道VBA支持我在Excel文件上需要做的所有事情,所以我决定使用它来完成我在C#中做不到的所有事情。下面是我当前生成报告的流程 1-设置一个“模板”excel文件(包含我需要的所有VBA代码,配置到工作簿_Open事件中,以便在人员打开excel文档时立即运行) 2-运行我的C#代码打开模板,用数据填充模板,生成数据透视表、图表等等 3-使用其他名称保存,以避免覆盖模板文件

范围

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

解决方案

因为我知道VBA支持我在Excel文件上需要做的所有事情,所以我决定使用它来完成我在C#中做不到的所有事情。下面是我当前生成报告的流程

1-设置一个“模板”excel文件(包含我需要的所有VBA代码,配置到
工作簿_Open
事件中,以便在人员打开excel文档时立即运行)

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

3-使用其他名称保存,以避免覆盖模板文件

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

问题:

手动打开Excel文件时,宏不起作用,导致以下错误:

在这行代码上

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


我认为原因可能与
Workbook\u Open
事件触发后未“准备好”读取的数据有关。

尝试
Workbook\u Activate
事件,该事件发生在
Workbook\u Open
之后,可以引用透视表等

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

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

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

我从未遇到过这样的情况,但在使用HTML对象时遇到过非常类似的情况。不确定这是否有效,但值得一试

Do Until Application.Ready = True
DoEvents: Loop

在执行的这一点上,
ActiveSheet
是否包含指定的透视表?我将尝试一下。我尝试了这个应用程序。等等,但失败了。也许,实时会起作用。我很快就会回来反馈“我的程序”可以是Sub吗?是的,必须是。把它放在一个标准模块中。我发现工作簿vba文件中的子模块有一个错误。一旦它在一个单独的模块上工作,它就会工作。我现在就去试试。太棒了,那是暗中刺伤。我以前使用过ie.Ready\u状态,但从未使用过应用程序。准备好了吗