ABCD SPACE个人博客上线啦~~~

VBA获取所有工作表名

您可以在大约4分钟内阅读这篇文章。

介绍两种从工作簿中获取所有工作表名的方法,将获取到的结果保存到字符串数组中,以方便后续使用。

函数1

' 函数名称:comm_get_sheetName_list1
' 功能:获取指定工作簿的所有工作表名称
' 说明:将取得的名称保存到字符串数组中。参数的工作簿需要事前打开。
' 参数:
'   - inWorkBook:工作簿对象
' 返回值:工作表名称的字符串数组
Function comm_get_sheetName_list1(inWorkBook As Workbook) As String()
    Dim oneSheet As Worksheet       ' 循环使用的临时sheet对象
    Dim sheetNameList() As String   ' 工作表名称数组
    Dim i As Integer                ' 数组下标变量

    i = 0   ' 初始化

    ' 循环取得参数设定的工作簿的每一个sheet对象
    For Each oneSheet In inWorkBook.Sheets
        ' 每循环一次,给工作表名称数组动态分配一个存储空间
        i = i + 1
        ReDim Preserve sheetNameList(i)
        ' 取得当次循环的工作表名称并保存到工作表名称数组
        sheetNameList(i) = oneSheet.Name
    Next
    
    ' 返回工作表名称数组
    comm_get_sheetName_list1 = sheetNameList
End Function

演示1

■当前工作簿

    ' 演示代码
    Dim sheetNameArr() As String    ' 接收函数返回的工作表数组
    ' 调用函数
    sheetNameArr = comm_get_sheetName_list1(ThisWorkbook)

    ' 循环输出结果
    Dim i As Integer
    For i = 1 To UBound(sheetNameArr)
        Debug.Print sheetNameArr(i)
    Next

■执行结果

函数2

' 函数名称:comm_get_sheetName_list2
' 功能:获取指定工作簿的所有工作表名称
' 说明:将取得的名称保存到字符串数组中。前提:工作簿已经打开。
' 参数:
'   - inWorkBook:工作簿对象
' 返回值:工作表名称的字符串数组
Function comm_get_sheetName_list2(inWorkBook As Workbook) As String()
    Dim sheetNameList() As String   ' 工作表名称数组
    Dim i As Integer                ' 数组下标变量
    Dim j As Integer                ' 工作表下标变量

    i = 0   ' 初始化

    ' 从1开始循环到工作表总数
    For j = 1 To inWorkBook.Sheets.Count
        ' 每循环一次,给工作表名称数组动态分配一个存储空间
        i = i + 1
        ReDim Preserve sheetNameList(i)
        ' 取得当次循环的工作表名称并保存到工作表名称数组
        sheetNameList(i) = inWorkBook.Sheets(j).Name
    Next
    
    ' 返回工作表名称数组
    comm_get_sheetName_list2 = sheetNameList、
End Function

演示2

■其他工作簿

    ' 演示代码
    Dim sheetNameArr() As String    ' 接收函数返回的工作表数组
    Dim otherWorkBook As Workbook   ' 工作簿对象
    ' 打开工作簿
    Set otherWorkBook = Workbooks.Open("D:\VBA\测试.xlsx")
    
    ' 调用函数
    sheetNameArr = comm_get_sheetName_list2(otherWorkBook)

    ' 循环输出结果
    Dim i As Integer
    For i = 1 To UBound(sheetNameArr)
        Debug.Print sheetNameArr(i)
    Next

■执行结果


谢谢打赏
谢谢打赏

评论