将带有VBA代码和按钮的工作表移动到新工作簿

时间:2015-06-24 18:01:12

标签: excel vba excel-vba

我有一个包含宏和按钮的工作表。我想将该工作表复制到其他工作簿,以便宏可以与新工作簿中的数据一起使用。

我的问题是,当我将工作表复制到新工作簿时,宏会附带它,但工作表上的按钮仍然指向原始工作簿中的宏。你必须右键单击"分配宏"并选择当前工作簿中的宏。

是否有属性设置告诉Excel中的按钮使用新工作簿中的宏而不是旧工作簿?

3 个答案:

答案 0 :(得分:0)

您可以在宏中包含一行,将控件重新分配给自己的工作簿中的宏,而不是原始工作簿。

您可以做的只是记录分配宏的行为,例如:

ActiveSheet.Shapes.Range(Array("Button 1")).Select
Selection.OnAction = "Macro1"

然后摆脱讨厌的“选择”的东西:

ActiveSheet.Shapes.Range(Array("Button 1")).OnAction = "Macro1"

你有它。当然,按钮和宏名称取决于您的工作簿,但它将接近于此。

答案 1 :(得分:0)

你的问题有些模糊。我会猜测。

你必须:

  1. 确保要运行的Sub实际包含在要复制的Worksheet中。按Alt + F11打开VB编辑器,您将在左侧看到Sheet和其他模块。

  2. 检查代码,并确保所有对宏的引用都没有任何工作表/工作簿名称的前缀。

答案 2 :(得分:0)

这是我从TheSpreadsheetGuru获得的解决方案。我对其进行了修改,以接受一个工作表对象,以便您可以在有手柄的任何工作表上运行它。

[RestrictHttps]
public class ExampleController : Controller
{
    // controller code goes here.
}