Microsoft VBA Excel 得到全部sheet名称

本文介绍了一种方法,通过编写VBA代码,自动化地从一个包含多个工作表的Excel(.xlsm)文件中提取所有sheet的名称,并将其写入新的.xlsx文件的Sheet1。只需修改代码中的工作簿路径,即可应用于其他文件。
摘要由CSDN通过智能技术生成

项目场景

简述:有一个几百个sheet的Excel文件,我需要得到全部的名称以便核对。转换一下就是新建一个.xlsm,得到另一个.xlsx的全部sheet名称。


代码描述

  1. 打开Excel,新建一个工作簿并保存为 .xlsm 格式。
  2. 按下 Alt + F11 打开VBA编辑器。
  3. 在“项目 - VBAProject”窗格中,右键点击你的工作簿名称,选择“插入” -> “模块”,这样就会创建一个新的模块。
  4. 在新模块的代码窗口中,复制并粘贴以下代码:
Sub ListSheetNamesFromWorkbook()
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim targetWorkbookPath As String
    Dim i As Integer

    ' 设置目标工作簿路径
    targetWorkbookPath = "C:\path\to\your\file.xlsx" ' 更改为目标文件的完整路径

    ' 尝试打开目标工作簿
    Set wb = Workbooks.Open(targetWorkbookPath)

    ' 初始化变量
    i = 1

    ' 遍历目标工作簿的所有工作表
    For Each ws In wb.Worksheets
        ' 将工作表名称写入当前工作簿的Sheet1中
        ThisWorkbook.Sheets("Sheet1").Cells(i, 1).Value = ws.Name
        
        ' 累加器,移动到下一个单元格
        i = i + 1
    Next ws

    ' 关闭目标工作簿,不保存更改
    wb.Close SaveChanges:=False
End Sub
  1. 修改 targetWorkbookPath 变量的值,使其指向你想要提取sheet名称的 .xlsx 文件路径。
  2. 按下 F5 或点击运行按钮来运行这个宏。

总结

简化复制粘贴操作。

### 回答1: 可以使用 VBAExcel 中循环遍历每一个工作表,然后使用 "Sheet.Name" 属性获取工作表的名称。 例如,以下代码可以在活动工作簿的每个工作表上循环,并在每个工作表的 "A1" 单元格内插入超级链接,其文本为工作表的名称,并将其链接到该工作表。 Sub CreateLinksToSheets() Dim ws As Worksheet For Each ws In ActiveWorkbook.Sheets With ws.Range("A1") .Hyperlinks.Add Anchor:=.Cells(1, 1), Address:="", SubAddress:= _ ws.Name & "!A1", TextToDisplay:=ws.Name End With Next ws End Sub 注意:在运行此代码之前,请确保启用了 "Microsoft Forms 2.0 对象库" 引用。 可以通过以下方式启用该引用: 1. 在 Excel 中打开 "开发人员" 工具栏。 2. 单击 "Visual Basic" 按钮。 3. 在 Visual Basic 编辑器中,单击 "工具" > "引用"。 4. 在 "引用" 对话框中,勾选 "Microsoft Forms 2.0 对象库" 前面的复选框,然后单击 "确定" 按钮。 希望这可以帮助你。 ### 回答2: 使用VBA可以很方便地获取Excel中每个sheet页的名称,并生成超级链接。下面是一个实现这个功能的例子: ``` Sub GenerateHyperlinks() Dim ws As Worksheet Dim hyperlinkSheet As Worksheet Dim row As Integer ' 创建一个名为Hyperlinks的工作表,用于存放超级链接 Set hyperlinkSheet = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)) hyperlinkSheet.Name = "Hyperlinks" ' 在Hyperlinks工作表中添加标题行 hyperlinkSheet.Range("A1").Value = "Sheet Name" hyperlinkSheet.Range("B1").Value = "Hyperlink" row = 2 ' 循环遍历所有的sheet页 For Each ws In ThisWorkbook.Sheets If ws.Name <> hyperlinkSheet.Name Then ' 排除Hyperlinks工作表 ' 将sheet页的名称填入Hyperlinks工作表的第一列 hyperlinkSheet.Cells(row, 1).Value = ws.Name ' 生成超级链接并插入到Hyperlinks工作表的第二列 hyperlinkSheet.Cells(row, 2).Formula = "=HYPERLINK(" & Chr(34) & "#" & ws.Name & "!A1" & Chr(34) & ")" row = row + 1 End If Next ws ' 设置超级链接列的格式为超级链接样式 hyperlinkSheet.Range("B:B").Style = "Hyperlink" ' 调整列宽 hyperlinkSheet.Columns("A:B").AutoFit ' 在Hyperlinks工作表中选中标题行 hyperlinkSheet.Range("A1:B1").Select End Sub ``` 执行上面的代码后,会在Excel文件中生成一个名为Hyperlinks的工作表,其中的第一列是每个sheet页的名称,第二列是对应的超级链接。可以根据需要自行调整、修改生成超级链接的方式和样式。 ### 回答3: 使用VBA编程可以很方便地获取Excel每个 sheet 页的名称,并生成超链接。下面是一个示例代码: ```vba Sub CreateHyperlinks() Dim ws As Worksheet Dim lnk As Hyperlink Dim rng As Range Dim shtName As String ' 遍历所有 sheet 页 For Each ws In ThisWorkbook.Sheets ' 获取 sheet 页的名称 shtName = ws.Name ' 设置超链接的目标范围 Set rng = ws.Range("A1") ' 创建超链接 Set lnk = ws.Hyperlinks.Add(rng, "#'" & shtName & "'!A1", , , shtName) ' 设置超链接样式 lnk.Range.Font.Color = RGB(0, 0, 255) lnk.Range.Font.Underline = xlUnderlineStyleNone lnk.Range.Font.Size = 12 Next ws End Sub ``` 这段代码使用了一个 For Each 循环来遍历当前工作簿中的所有 sheet 页。对于每个 sheet 页,获取其名称并将其作为超链接的显示文本。然后,创建一个超链接对象并指定其目标范围为单元格 A1。超链接的目标地址是一个字符串,由 "#"、单引号、sheet名称、单引号、叹号和单元格地址组成。最后,通过设置超链接对象的 Range 属性,可以对超链接的样式进行修改,如字体颜色、下划线和大小等。 运行该宏后,每个 sheet 页的单元格 A1 都会生成一个超链接,点击该链接可以跳转到对应的 sheet 页。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值