Microsoft Excel VBA 输出文件夹内全部Excel内的sheet

Excel-VBA 快速上手(六、工作表对象、Sheet 页的常用操作) vba、工作表对象、Sheet页的常用操作 阅读详情

问题场景

简述:
打开Summary.xlsm的文件,需要在此写一个VBA程序,读取一个指定文件夹的全部Excel,每个Excel的名称都变成Summary.xlsm的sheet名称,然后输入每个Excel的sheet名称到A列内(第一个单元格是列名"SheetsName")。


代码描述

  1. 获取指定文件夹中的所有Excel文件。
  2. 对于每个Excel文件:
    • 创建一个新的sheet工作表,以文件名(不带扩展名)命名。
    • 在新工作表的A列中列出该Excel文件中的所有工作表名称。
Sub ListSheets()
    Dim FileSystem As Object
    Dim Folder As Object
    Dim File As Object
    Dim SourceWorkbook As Workbook
    Dim SourceSheet As Worksheet
    Dim wbCheck As Workbook
    Dim wsSummary As Worksheet
    Dim NewSheet As Worksheet
    
    Dim FolderPath As String
    Dim FileName As String
    Dim FileNameCell As Range
    Dim SheetNameCell As Range
    Dim i As Integer
    Dim SheetIndex As Integer

    ' 设置要扫描的文件夹路径
    FolderPath = "C:\Folder\Path" ' 修改文件夹路径

    ' 确保文件夹路径以反斜杠结束
    If Right(FolderPath, 1) <> "\" Then FolderPath = FolderPath & "\"

    ' 设置wbCheck 为当前活动的工作簿
    Set wbCheck = ThisWorkbook

    ' 创建FileSystemObject
    Set FileSystem = CreateObject("Scripting.FileSystemObject")
    Set Folder = FileSystem.GetFolder(FolderPath)

    ' 找到名称为"FileName"的单元格
    On Error Resume Next ' 如果未找到名称定义,避免错误
    Set FileNameCell = ws.Range("FileName")
    On Error GoTo 0 ' 重新启用错误报告

    ' 如果找不到名称定义,则退出宏
    If FileNameCell Is Nothing Then
        MsgBox "The range name 'FileName' is not defined.", vbExclamation, "Range Name Not Found"
        Exit Sub
    End If

    ' 从"FileName"单元格下一行开始
    i = FileNameCell.Row + 1

    ' 遍历文件夹中的每个Excel文件
    For Each File In Folder.Files
        If LCase(FileSystem.GetExtensionName(File.Path)) Like "xls*" Then
			' 文件名称写入Excel中
			wsSummary.Cells(i, FileNameCell.Column).Value = FileName = FileSystem.GetBaseName(File.Path)
            ' 在wbCheck 中创建一个新的工作表
            Set NewSheet = wbCheck .Sheets.Add(After:=wbCheck .Sheets(wbCheck .Sheets.Count))
            NewSheet.Name = FileName

            ' 打开源Excel文件
            Set SourceWorkbook = Workbooks.Open(File.Path)

            ' 列出源Excel文件中的所有工作表名称
            SheetIndex = 1
            For Each SourceSheet In SourceWorkbook.Sheets
                NewSheet.Cells(SheetIndex, 1).Value = SourceSheet.Name
                SheetIndex = SheetIndex + 1
            Next SourceSheet

            ' 关闭源Excel文件
            SourceWorkbook.Close SaveChanges:=False
           
            i = i + 1
        End If
    Next File

    ' 清理
    Set File = Nothing
    Set Folder = Nothing
    Set FileSystem = Nothing
    Set SourceWorkbook = Nothing
    Set SourceSheet = Nothing
    Set NewSheet = Nothing
End Sub

注意事项

  • 在运行这个宏之前,请确保Summary.xlsm文件已经打开并且有足够的权限访问指定的文件夹。

  • 此代码也假设所有的Excel文件都有 .xls、.xlsx、.xlsm 等扩展名,如果有其他格式的Excel文件,需要调整 Like "xls*" 这一行代码来匹配它们。

合并多个Excel ,批量修改sheet名,批量删除多个指定sheet 合并多个Excel 到同一个工作簿中,批量修改sheet名,批量删除指定sheet (60条消息) 合并多个Excel ,批量修改sheet名,批量删除多个指定sheet_aldsong123的博客-优快云博客_excel批量改sheethttps://blog.youkuaiyun.com/aldsong123/article/details/86235365?spm=1001.2101.3001.6650.7&utm_medium=distribute.pc_relevant.none-task-blo 阅读详情

相关推荐

【vba】——整合excel数据

vba是在最初组织旧版评教系统时就接触过的,但一直没研究过,也没仔细看过。只知道它可以整理数据。 了解:     Visual Basic for Applications(VBA)是Visual Basic的一种宏语言,是微软开发出来在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。主要能用来扩展Windows的应用程式功能,特别是Microsoft Office软件。也可说是一种

相由心生-心随相改~ 1万+

Microsoft VBA Excel 得到全部sheet名称

小妙招 啦啦啦

RandPython的博客 2961

【Excel VBA编程】你有多久没清理桌面文档了?

要获取到路径下的空文件这个功能,需要用到FileSystemObject对象,该对象在Microsoft Scripting Runtime库,需要先添加。在VBA界面,点击工具--引用,在弹出框中找到Microsoft Scripting Runtime

wei1019的专栏 1791

VBA:获取工作簿中所有表的名称、地址

获取工作簿中所有表的名称和地址

youngmiffy的博客 6859

LLM大模型基础知识【一】

大语言模型(LLM):是指在自然语言处理(Natural Language Processing,NLP)领域中的一类大模型,通常用于处理文本数据和理解自然语言。这类大模型的主要特点是它们在大规模语料库上进行了训练,以学习自然语言的各种语法、语义和语境规则。例如:GPT系列(OpenAI)、Bard(Google)、文心一言(百度)。视觉大模型:是指在计算机视觉(Computer Vision,CV)领域中使用的大模型,通常用于图像处理和分析。

lin_xi_xi的博客 2882

MySQL下载和安装教程

1.下载MySQL数据库可以访问官方网站:https://www.mysql.com/ 2.点击DOWNLOADS模块下的Community模块下的MySQL Community Server进行下载。 由于目前最新版本是:MySQL Community Server 5.7.21 建议博友下载历史版本,本博下载的是5.6.39 下载步骤: 进入,选择MySQL的版本及主机 根据自己的电脑选择相应的位数进行下载,本机是64位,点击download。 进入下.

残雪的剑的博客 4万+

如何通过 vba 获取工作簿所有sheet的名称 给出代码示例

你可以使用下面这段代码来获取Excel工作簿中所有sheet的名称:Sub 获取工作簿Sheet名称() Dim i As Integer For i = 1 To Sheets.Count Debug.Print Sheets(i).Name Next i End Sub ...

weixin_42591413的博客 1472

AVL Cruise 2020.1 安装教程

AVL Cruise 2020.1 安装教程

chengkai730的博客 9489

VBA—遍历EXCEL文件中的Sheet

遍历EXCEL文件中的Sheet。

congconglili1的专栏 9511

从Mate到Mate40 Pro+:华为旗舰核心配置演进与选购避坑指南

本文回顾了华为Mate系列从初代到Mate40 Pro+的核心配置演进历程,重点分析了处理器性能、影像系统、屏幕设计及续航快充的技术突破。针对选购需求,提供了区分版本、5G选择及存储配置的实用避坑建议,帮助消费者明智选择华为旗舰机型。

weixin_30015371的博客 496

高效与灵活相结合:Verilog编写的跨时钟域循环缓冲控制器解析

循环缓冲区,也被称作循环队列、环形缓冲区,是一种数据结构,其主要特性是使用一个固定大小的缓冲区作为数据的存储空间,这个缓冲区在逻辑上被视作是首尾相接的。虽然Verilog是一种常用的硬件描述语言,被广泛应用在FPGA和ASIC设计中,但是在描述循环缓冲区时,它并没有提供一种直接且灵活的方式来指定循环缓冲区的参数,如字长、缓冲区深度、缓冲区数量等。这给硬件设计带来了一定的不便。同时,该控制器的设计也充分考虑了硬件资源的利用率,通过优化的算法和数据结构,使得在实现高性能的同时,也能够有效地节省硬件资源。

qq_38334677的博客 1223

vba批量合并指定的sheet_如何将一个EXCEL中的多个SHEET中内容合并到一个SHE...-excel合并多个sheet,sheet批量合并...

以WPS 2019版本为例:关于excel怎么快速合并多个工作表数据到一个工作表,您可使用WPS参考下述步骤zd完成操作:1、打开「表格(Excel)」文档;2、点击「数据-合并表格-多个工作表合并成内一个工作表」;3、勾选需合并的工作表即可。提示:在设置合并工容作表时也可添加其他「表格(Excel)」文档来选择其他文档的工作表来合并。将一个EXCEL中的多个SHEET中内容合并到一个SHEET中...

weixin_35080040的博客 4626

【Unity实战100例】Unity循环UI界面切换卡片功能

功能包括:可以设置半径,高度,速度,元素数量用户可以根据自己的实际需求接入 制作思路:创建每个元素对应的虚拟点,通过旋转管理这些虚拟点,然后把旋转信息和位置信息同步给实际的元素

纯技术流日常开发商业开发记录总结等 7718

Microsoft VBA Excel 一键删除全部sheet

谨慎的小妙招 啦啦啦

RandPython的博客 1489

使用 MATLAB/Simulink + Reinforcement Learning Toolbox 构建一个基于强化学习的永磁同步电机(PMSM)自适应控制仿真系统

随着人工智能(AI)技术的快速发展,强化学习(Reinforcement Learning, RL)在控制系统中的应用日益广泛。在电机控制领域,传统的PID控制虽然成熟稳定,但在面对非线性、时变、不确定负载等复杂工况时,其控制性能可能受限。而强化学习通过与环境的交互学习,能够实现在线自适应控制策略优化,显著提升系统的鲁棒性与响应速度。本教程将带你使用构建一个基于强化学习的永磁同步电机(PMSM)自适应控制仿真系统,实现从控制策略设计、环境建模、训练到仿真的全过程。当前转速(ω)

amy_mhd的博客 407

MATLAB之把多个小cell拼成一个数组

问题描述 现有一个cell向量 L (90000,1),每个元素都是由一个(100X9)的double数组组成的.如图. 其中, 每个cell元素都是一个单独的数据, 我们要把它转换成(90000, 19, 100)的三维数组. cell2mat, 但是所有的数据会堆叠起来 L2=cell2mat(L); % (90000, 19) reshape, 变成三维数组 reshape的原理是从上到下, 从左往右拆开重组. 目前只有19这一维数据与要求一致, 那就以这个为突破口. L2=L2'; %

落日之城 9251

Microsoft VBA Excel 提取相同名称的整列数据

啦啦啦

RandPython的博客 2264

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

【Microsoft Office Excel 2021表格实现下拉复选框多选】

Microsoft Office Excel 2021表格实现下拉复选框多选

板砖码农的博客 2万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Microsoft VBA Excel 规律的Text文件转工作表Sheet

啦啦啦

RandPython的博客 899

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

php 合并多个excel,excel中如何将多个sheet合并成一个

为了实现将无数个有相同数据格式的excel表文件合并到一个excel的一个工作簿里面去方便进行后续的筛选,提取数据,分析等等。需要分两步走:第一步:将所有的excel合并到一个excel之中;刚才的多表之中的内容化身为现在的一个表,下边的多个sheet。第二步:把这个excel之中的多个sheet合并到一个sheet之中。需要的基础软件:拥有VBA的excel软件,可以用微软的包含有VBA的off...

weixin_30039395的博客 1082

python拆分excel的sheet为单文件_WPS 2019 多个sheet表拆分成独立的excel文件

参考:场景:将多个sheet表拆分成独立的excel文件一、安装VB工具:默认情况下:wps -- 开发工具 --- VB 编辑器是灰选状态(即不可用状态),此时需要先安装vb工具:VBA For WPS 2019安装步骤依次为:vcredist_x86.exe、Vba71.msi、Vba71_1033.MSI、Vba71_2052.msi二、操作步骤:点击 【开发工具】--》【vba编辑器】--...

weixin_39929377的博客 1225

Microsoft VBA Excel 一键清除

快乐打工日记【香港】

RandPython的博客 1826

Excel按Sheet页拆分成多个.xlsx文件(宏)

使用宏将一个包含多个Sheet页的Excel文件按Sheet页拆分成多个.xlsx文件,使用的 Office 版本为2019,亲测可用

一名小码农的博客 7715

Microsoft VBA Excel Access 核对数据

小妙招 啦啦啦

RandPython的博客 643

VBA一键合并Excel工作薄:两段代码搞定“合并(附完整源码和学习素材包)

【Excel自动合并VBA代码】提供两种高效合并Excel文件的方法:①多文件合并为多Sheet工作簿,保留原始结构;②多文件纵向拼接为单表,适合统计分析。操作步骤:1)文件放同目录;2)新建汇总表插入VBA代码;3)一键运行。注意事项:文件结构需一致、路径避免中文、数据量超10万行慎用。附完整代码、图文教程及学习素材包,解决财务/HR多表合并痛点,效率提升90%。(135字)

liulanghan023的博客 522

VBA Excel实践如何系列(二) excel vba如何使用数据库

用Excel文件作为数据库 首先,要引用一些微软提供的数据库控件 第二,写代码 1,打开数据文件pbxtext.xlsx 2,定义ADODB对象 3,处理ADODB对象 4,执行SQL语句 5,显示SQL结果到新的sheet 代码如下: Sub sqltest() Dim Spath As String Spath = ThisWorkbook.Pat...

monkeyzh123的专栏 1397
上一篇: Microsoft VBA Excel 读取文件夹文件名
下一篇: Microsoft VBA Excel 一键删除全部sheet
偷心伊普西隆
博客等级 码龄7年 511粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值