我必须制作工作簿的精确副本才能翻译它,并且宏不起作用,因为它的源是原始工作簿(根据调试器)。如何使这些宏在新工作簿中工作?我可以更改新工作簿中的宏代码吗?
答案 0 :(得分:0)
取决于宏及其编程方式。 如果宏使用绝对路径,如文件所在的位置,则需要更改宏。
您可以使用不同的样式编程宏。要将它用于不同的工作簿,您可以使用ActiveWorkbook对象对其进行编程。因此,如果您打开工作簿并启动它,它将使用活动工具簿。您甚至可以在使用宏打开文件时使用它,然后更改为其他工作簿,因为该工作簿是活动工作簿。
您需要查看宏的编程方式。就像你说的,如果你关闭所有工作簿,复制文件,启动新文件,它仍然引用旧文件,那么宏代码中应该有一个绝对路径。
使用macroeditor打开宏并查找类似的内容:
Dim WB As Workbook
WB是一个变量,所以它也可以是任何其他名称。举个例子,我带着WB来这里。当您发现工作簿变量时,请查找以下内容:
Set WB = Workbooks.Open("c:\somewhere\file.xlsm")
您需要将路径放在新位置或将其更改为
Set WB = ActiveWorkbook
或
Set WB = ThisWorkbook
这两者之间的区别仅在于ActiveWorkbook总是使用活动的,因此可以将它用于多个工作簿,而无需将其导入新文件。如果您选择ThisWorkbook,marco将始终引用具有宏所属的工作簿。
我希望这就是你所需要的。
修改强> 阅读未格式化的代码后,你去了:
Workbooks.Open ("F:\Advisory\AAA Ficheros de Propuesta\Master Files\Propuesta Integral - Master File\Datos de Cliente\Positions.xlsm")
这可能是问题