vba - 使用 VBA 按代号引用另一个工作簿中的工作表

标签 vba excel

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

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

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

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 对象现已设置到本示例中代号为“Lines”的工作表。

<小时/>

最初的灵感是here .

关于vba - 使用 VBA 按代号引用另一个工作簿中的工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22256536/

相关文章:

vba - 使用 Sublime Text 或 Notepad++ 作为 VBA 的编辑器和生成器

vba - Excel VBA - 关闭工作簿

使用多个标准的 VBA 自动筛选

excel - 使用 VBA 从行中提取数据

excel - 引用在公式中使用的工作表和单元格

ms-access - 使用 acCmdDeleteRecord 删除 MS Access 中连续表单上的记录

Excel VBA 如何选择可变的单元格范围

c# - 如何加快写入 Excel 工作表的速度

vba - 如何删除此工作簿中未使用的 QueryTable 连接?

excel - 打开 ADODB 连接时出现 "Unspecified error"