Excel VBA - 使用工作簿B中的模块更新工作簿A中的数据

时间:2009-07-07 16:04:39

标签: excel vba excel-addins

我有10个XLS,每个都包含几百行VBA,它们做同样的事情。我想将这个公共代码移动到第11个XLS,并让其他10个代码在第11个XLS中调用。 公共代码必须能够访问调用XLS中的所有数据和工作表。这个最后一个要求似乎没有通过SO上的这个问题的其他答案来解决。我可以将调用XLS的工作表作为参数或类似的东西传递吗?

2 个答案:

答案 0 :(得分:7)

我建议您创建一个XLA文件(Excel Add In),而不是将其放入辅助XLS文件中。

这是XLA的目标。在这种情况下,XLA将以您想要的方式工作。

有关创建XLA的详细信息,请参阅this page

答案 1 :(得分:3)

是的,您可以将对工作簿,工作表,范围等的引用作为参数传递给任何函数:

Public Sub CallMe(ByVal oWorkbook as Workbook)

    Dim oWorksheet as Worksheet
    Set oWorksheet = oWorkbook.Worksheets(1)

    ' Do stuff...

End Sub

请注意,您可能不得不重写从10个工作簿中复制的大量代码,因为它们将充满对“this”工作簿的隐式引用,例如Worksheets(1)等。在上面的示例中,您现在需要说oWorkbook.Workbooks(1)