使用VBA通过代号引用另一个工作簿中的工作表

我正在尝试使用VBA将数据从一个工作簿复制到当前工作簿。 InputBook是一个工作簿对象,指的是我想从中提取数据的文件。 主要的问题是引用InputBook工作簿中的特定工作表。 在InputBook中 ,我有一个名为“Lines”的代码名为LINES的工作表。 我宁愿用代号来引用这个工作表,例如:

NumItems = WorksheetFunction.CountA(InputBook.LINES.Columns(1)) 

这显然不起作用,我知道我可以通过使用以下任一function使其function:

 NumItems = WorksheetFunction.CountA(InputBook.Sheets("Lines").Columns(1)) NumItems = WorksheetFunction.CountA(InputBook.Sheets(2).Columns(1)) 

但是,我宁愿不使用这两种方法中的任何一种,因为它们看起来不够健壮。 有没有办法在另一个打开的工作簿中引用工作表对象的代号? 谢谢。

您可以通过以下方式“引用”另一个工作簿工作表代码名称:

 Sub UseCodeNameFromOutsideProject() Dim WS As Worksheet With Workbooks("InputBook .xls") Set WS = _ .Worksheets(CStr(.VBProject.VBComponents("Lines").Properties(7))) debug.print WS.Name End With End Sub 

现在,您的WS对象被设置为在此示例中代号为“行”的工作表。


原创灵感就在这里 。

我可以调用工作簿“我喜欢茶”,但InputBook.I LIKE TEA.Columns(1)不会削减它。

const或者摘掉这个名字

 public enum InputSheets LINES = 2, GARMENTS = 4 end enum 

允许:

 InputBook.Sheets(InputSheets.LINES).Columns(1) 

要么

 MyGetSheetFunction(InputBook, InputSheets.LINES) 

你可以进一步使用包装类。