我的情况是我正在尝试从工作簿B打开工作簿A并运行Workbook_Open子程序。使用Workbooks.Open("c:\myworkbook.xls")的问题在于,在Workbook_Open子程序运行之前,我需要在Workbook A中插入数据。
我有两个想法,但都不太喜欢,所以我想知道是否有更好的方法。我的两个想法如下。
选项1:禁用宏打开工作簿A,插入数据,保存并关闭工作簿,然后启用宏重新打开它。我不希望这样做的原因是:我正在处理一个具有相当多格式的.xls文件(基本上我正在模拟人类如何使用它数千次),多次保存文件可能会导致文件损坏。此外,两次打开工作簿需要很长时间,对我来说似乎并不高效。其中一个重点是速度和效率以最快的周转时间为重点。
选项2:将Workbook_Open代码复制为模块中的公共子程序。这是两个选项中更理想的选择,但问题是我不一定有权限执行此操作,而且这样做将涉及大量的审批程序和注意事项等。
是否有办法做到这样的事情:
我有两个想法,但都不太喜欢,所以我想知道是否有更好的方法。我的两个想法如下。
选项1:禁用宏打开工作簿A,插入数据,保存并关闭工作簿,然后启用宏重新打开它。我不希望这样做的原因是:我正在处理一个具有相当多格式的.xls文件(基本上我正在模拟人类如何使用它数千次),多次保存文件可能会导致文件损坏。此外,两次打开工作簿需要很长时间,对我来说似乎并不高效。其中一个重点是速度和效率以最快的周转时间为重点。
选项2:将Workbook_Open代码复制为模块中的公共子程序。这是两个选项中更理想的选择,但问题是我不一定有权限执行此操作,而且这样做将涉及大量的审批程序和注意事项等。
是否有办法做到这样的事情:
Workbooks("Workbook A").Application.Run (Workbooks("Workbook A").Workbook_Open)
ThisWorkbook
模块中 - 你可以从那里调用PrivateWorkbook_Open
。http://www.cpearson.com/excel/vbe.aspx - Tim Williams