复制到另一个工作簿时,宏不起作用

时间:2016-07-20 16:04:50

标签: excel excel-vba module vba

我必须制作工作簿的精确副本才能翻译它,并且宏不起作用,因为它的源是原始工作簿(根据调试器)。如何使这些宏在新工作簿中工作?我可以更改新工作簿中的宏代码吗?

1 个答案:

答案 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")

这可能是问题