vba遍历工作簿的所有工作表和名称管理器输出及单元格名称

Sub GetSheetConfigWithFilter()
    Dim ws As Worksheet
    Dim nm As Name
    Dim sheetName As String
    Dim nmName As String
    Dim cellValue As Variant
    Dim outputText As String
    Dim filePath As String

    ' 初始化字符串变量
    outputText = ""

    ' 设置文件路径(根据需要修改)
    filePath = "E:\output.txt"

    ' 遍历所有的工作表
    For Each ws In ThisWorkbook.Sheets
        sheetName = ws.Name

        ' 遍历当前工作表的所有名称管理器
        For Each nm In ws.Names
            If nm Is Nothing Then
                a = 1
            Else
                ' 获取名称管理器的名称
                nmName = nm.Name

                ' 移除sheet名,并检查名称是否以 "Mark_" 开头
                Dim sheetDelimiter As String
                sheetDelimiter = IIf(InStr(1, nmName, "'") > 0, "'", "")
                Dim nameWithoutSheet As String
                nameWithoutSheet = Mid(nmName, InStr(nmName, sheetDelimiter) + Len(sheetDelimiter) + Len(sheetName))

                ' 添加 try
                On Error Resume Next

                If Left(nameWithoutSheet, 6) = "!Mark_" Then
                    ' 使用 Evaluate 获取引用范围的值
                    cellValue = ws.Evaluate(nmName)

                    ' 将结果添加到字符串变量中
                    outputText = outputText & "list.Add(new SheetConfig(""" & sheetName & """,""" & nmName & """,""" & CStr(cellValue) & """));" & vbCrLf
                End If

                ' 恢复错误处理
                On Error GoTo 0
            End If
        Next nm
    Next ws

    ' 将字符串变量的内容写入文件
    Open filePath For Output As #1
    Print #1, outputText
    Close #1
End Sub

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 你可以使用下面这段代码来获取Excel工作簿所有sheet的名称:Sub 获取工作簿Sheet名称() Dim i As Integer For i = 1 To Sheets.Count Debug.Print Sheets(i).Name Next i End Sub ### 回答2: 通过VBA可以使用Workbook对象的Sheets属性来获取工作簿所有工作名称。以下是一个获取工作簿所有Sheet名称的代码示例: ```vba Sub GetSheetNames() Dim wb As Workbook Set wb = ThisWorkbook ' 设置要操作的工作簿,这里是当前活动工作簿 Dim ws As Worksheet For Each ws In wb.Sheets ' 遍历工作簿的每个工作 MsgBox ws.Name ' 弹出消息框显示工作名称 Next ws End Sub ``` 在上面的代码,首先使用`Set`关键字将当前活动工作簿赋值给名为`wb`的Workbook对象。然后使用For Each循环迭代`wb.Sheets`属性,它返回一个包含所有工作的集合。在循环,使用`ws.Name`获取每个工作名称,并使用`MsgBox`显示出来。 使用此代码示例,你可以获取工作簿所有Sheet的名称。你可以将代码放置在VBA编辑器的一个模块,并通过执行Sub GetSheetNames()来运行它。 ### 回答3: 通过VBA可以很方便地获取工作簿所有sheet的名称。以下是一个简单的示例代码: ``` Sub GetSheetNames() Dim ws As Worksheet Dim sheetNames As String '清空sheetNames变量 sheetNames = "" '循环工作簿的每个sheet For Each ws In ThisWorkbook.Sheets '将每个sheet的名称追加到sheetNames变量 sheetNames = sheetNames & ws.Name & "," Next ws '将结果显示出来 MsgBox "工作簿的所有sheet名称:" & sheetNames '或者将结果输出单元格 'Range("A1").Value = "工作簿的所有sheet名称:" & sheetNames End Sub ``` 以上代码首先定义了一个字符串变量`sheetNames`用于存储所有sheet的名称。然后通过`For Each`循环遍历工作簿的每个sheet,将其名称追加到`sheetNames`变量,并使用逗号分隔。最后,通过`MsgBox`函数弹出一个消息框显示所有sheet的名称,你也可以将结果输出到指定的单元格
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值