3

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

4

2 回答 2

7

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

这正是 XLA 所针对的场景。在这种情况下,XLA 将按照您想要的方式工作。

有关创建 XLA 的详细信息,请参阅此页面

于 2009-07-07T16:07:44.823 回答
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)而是说。

于 2009-07-07T16:21:54.453 回答