Excel VBA 自动生成文件夹框架

VBA中根据工作表中的数据创建文件夹结构 这种自动创建文件夹结构的方法可以用于许多需要按照特定模式组织文件夹的应用场景,例如日常文件管理、数据备份等。 阅读详情

方案设计

  1. Excel界面:

    • 在Excel中创建一个工作表,用于输入:
      • 基础路径(在哪里创建文件夹)。
      • 季度列表(例如2025Q1、2025Q2等)。
      • 子文件夹结构(例如“私募产品-基金A”“公募产品-基金S”)。
    • 添加一个按钮,运行VBA宏以生成文件夹。
  2. VBA功能:

    • 读取Excel中的路径、季度和子文件夹结构。
    • 检查目标路径是否存在,若不存在则创建。
    • 循环每个季度,在路径下创建季度文件夹。
    • 在每个季度文件夹中创建相同的子文件夹结构。
  3. 文件夹结构示例:

    根目录
    ├── 2025Q1
    │   ├── 私募产品
    │   │   └── 基金A
    │   └── 公募产品
    │       └── 基金S
    ├── 2025Q2
    │   ├── 私募产品
    │   │   └── 基金A
    │   └── 公募产品
    │       └── 基金S
    ...
    

Excel表格设置

  1. 打开Excel,创建一个新工作簿。
  2. 在Sheet1中设置以下结构:
A列B列
基础路径D:\FolderFramework
季度列表2025Q1
2025Q2
2025Q3
2025Q4
子文件夹私募产品\基金A
公募产品\基金S
  • A1:标题“基础路径”,B1:输入目标路径(如D:\FolderFramework)。
  • A2:标题“季度列表”,B2及以下:输入季度名称(如2025Q1、2025Q2等)。
  • A6(或根据季度数量调整):标题“子文件夹”,B6及以下:输入子文件夹路径(用“\”分隔层级)。
  1. 保存文件为启用宏的格式(.xlsm)。

VBA代码

Option Explicit

Sub CreateFolderStructure()
    Dim ws As Worksheet
    Dim basePath As String
    Dim quarters As Range, quarter As Range
    Dim subFolders As Range, subFolder As Range
    Dim folderPath As String
    Dim fso As Object
    Dim i As Long, j As Long
    
    ' 设置工作表
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ' 获取基础路径
    basePath = Trim(ws.Range("B1").Value)
    If Right(basePath, 1) <> "\" Then basePath = basePath & "\"
    
    ' 检查基础路径是否存在,不存在则创建
    Set fso = CreateObject("Scripting.FileSystemObject")
    If Not fso.FolderExists(basePath) Then
        fso.CreateFolder basePath
    End If
    
    ' 获取季度列表(从B2开始,直到空单元格)
    Set quarters = ws.Range("B2", ws.Range("B2").End(xlDown))
    
    ' 获取子文件夹列表(从B6开始,直到空单元格,假设季度列表后一行是子文件夹标题)
    Set subFolders = ws.Range("B" & quarters.End(xlDown).Row + 2, ws.Range("B" & quarters.End(xlDown).Row + 2).End(xlDown))
    
    ' 循环每个季度
    For Each quarter In quarters
        If Trim(quarter.Value) <> "" Then
            ' 创建季度文件夹
            folderPath = basePath & quarter.Value
            If Not fso.FolderExists(folderPath) Then
                fso.CreateFolder folderPath
            End If
            
            ' 在季度文件夹下创建子文件夹结构
            For Each subFolder In subFolders
                If Trim(subFolder.Value) <> "" Then
                    ' 将子文件夹路径中的“\”拆分为多级目录
                    Dim subFolderArray As Variant
                    subFolderArray = Split(subFolder.Value, "\")
                    
                    Dim currentPath As String
                    currentPath = folderPath
                    
                    ' 逐级创建子文件夹
                    For j = LBound(subFolderArray) To UBound(subFolderArray)
                        currentPath = currentPath & "\" & subFolderArray(j)
                        If Not fso.FolderExists(currentPath) Then
                            fso.CreateFolder currentPath
                        End If
                    Next j
                End If
            Next subFolder
        End If
    Next quarter
    
    MsgBox "文件夹框架生成完成!", vbInformation
End Sub

添加运行按钮

  1. 返回Excel,进入“开发工具”选项卡(若不可见,启用:文件 -> 选项 -> 自定义功能区 -> 勾选“开发工具”)。
  2. 在Sheet1插入按钮:开发工具 -> 插入 -> 窗体控件 -> 按钮。
  3. 将按钮命名为“生成文件夹”,右键分配宏,选择CreateFolderStructure。

使用说明

  1. 确保Excel文件保存为.xlsm格式。
  2. 在B1输入基础路径(如D:\FolderFramework)。
  3. 在B2及以下输入季度名称(如2025Q1、2025Q2)。
  4. 在B6及以下输入子文件夹结构(如私募产品\基金A、公募产品\基金S)。
  5. 点击“生成文件夹”按钮运行宏。
  6. 宏会检查路径是否存在,若不存在则创建,然后为每个季度生成文件夹和子文件夹结构。

注意事项

  1. 路径合法性:确保B1中的路径有效,且磁盘有足够权限。
  2. 季度和子文件夹输入:确保B列中没有多余空行,否则可能导致循环错误。
  3. 错误处理:代码包含基本错误检查,但建议在实际使用前测试。
  4. 扩展性:可根据需要修改子文件夹结构(例如添加更多层级或动态读取)。
已有一个Excel表格,用VBA批量新建文件夹 已有一组Excel表格数据,使用VBA快速批量建文件夹 不知道标题怎么写。 已经有了这样一组数据 然后需要根据这两组数据新建文件夹,代码如下 Sub 建文件夹() Dim i As Integer '用于下方数组 Dim Arr1(), Arr2() '定义一个数组,不能定义大小和类型 Dim Fso, Fld '定义文件路径 Dim rowmax '找到数据的行数 start_time = Timer '计时开始 '数据的行数 阅读详情

相关推荐

Excel VBA编程

文章目录如何创建VBAVBA语法规则声明变量给变量赋值让变量存储的数据参与运算关于声明变量的其他知识变量的作用域特殊的变量——数组声明多维数组声明动态数组其他创建数组的方法数组函数利用UBound求数组的最大索引号利用LBound函数求最小索引号求多维数组的最大和最小索引号用join函数将一维数组合并成字符串将数组内容写入工作表中数组的存取特殊数据的专用容器——常量对象,集合及对象的属性和方法VB...

Peter_Luoz的博客 3万+

Excel VBA - 遍历某个文件夹中文件、文件夹及批量建立txt

我们可能会经常要将一个文件夹中的所有文件都遍历一遍,然后进行修改,下面就介绍用Dir函数实现遍历*.xlsx文件的方法 Dir 函数 返回一个 String,用以表示一个文件名、目录名或文件夹名称,它必须与指定的模式或文件属性、或磁盘卷标相匹配。 语法 Dir[(pathname[, attributes])] 第一个参数即是文件的地址,第一次引用的时候要标注,第二次用的时候就不必指出了

10万+

【Excel VBA 编程】递归提取所有子文件夹中的文件名输出到Excel,并添加文件超链接

自动扫描文件夹及其子文件夹获取全部类型的 文件批量生成超链接并记录文件路径,方便快速打开文件和后续管理另外,本期涉及的宏名及变量全部都是使用中文定义的,与前几期的英文版相比,代码阅读是否容易了呢?大家可以根据自己情况,自由选择使用中文还是英文如果想学习更多的编程知识,无论是用来提升自动化办公效率还是想着提升自我,都可以关注我的公众号“努力鸭是黑色的”,解锁更多的VBA技能。

wei1019的专栏 1494

Excel VBA 移动文件和文件夹

1、移动指定文件:Public Sub 移动文件() Dim myFile As String Dim myNewFilePath As String Dim fso As Scripting.FileSystemObject myFile = ThisWorkbook.Path & "\test.txt" '要移动的文件 myNewFilePath =

张博在读 1万+

EXCEL VBA自动读取文件夹中不同格式的文件名写入excel并加上超链接

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

SsuperBao的博客 2853

vba访问文件服务器,使用Excel VBA获取共享点文件夹的内容

通常,我使用这段代码来检索VBA中文件夹的内容。 但这在共享点的情况下不起作用。 我能怎么做 ?Dim folder As folderDim f As FileDim fs As New FileSystemObjectSet folder = fs.GetFolder("//sharepoint.address/path/to/folder")For Each f In folder.File...

weixin_33529455的博客 3549

Excel VBA小程序02-如何用VBA提取文件夹内文件名?

一、提取单层文件内的文件名 只会提取到文件,如果是文件夹自动忽略。 Sub FileDir() Dim p$, f$, k& '获取用户选择文件夹的路径 With Application.FileDialog(msoFileDialogFolderPicker) '选择文件夹 If .Show Then p = .SelectedItems(1) '选择的文件路径赋值变量P Else

Nemuel的博客 5601

使用VBA生成Excel目录列表

一、个人需求 最近使用Excel整理一些术语解释的文档,每个术语都对应一个sheet,最后有个索引页,可以快速链接到指定的sheet。 由于sheet会不断增加,做索引页时需要自动生成。考虑使用VBA实现,由于初次接触VBA,在此留个备份。 二、功能实现 (1)新建“索引”sheet,在此工作表中插入一个“生成索引”的按钮,如下图:  (2)为此按

八零后程序员的日常琐话,不定期分享推荐技术干货。 6548

EXCEL VBA 获取文件夹及子文件夹下所有文件并建立超链接

(1)首先,楼主先新建一个excel,名称楼主自己写,怎样都行,然后将其打开。 (2)打开后按住Alt再按F11,这样就会打开vba代码编辑器 (3)点菜单栏上的“插入”,选择“模块”,这样在左下角就会出现一个“模块1” (4)双击“模块1”,右边就会出现“模块1”的编辑界面,将以下代码复制,并粘贴到这个界面中,按F5运行。 1 2 3 4 5 ...

caoyongsheng的博客 1万+

Xilinx SDK调试与FPGA硬件验证全流程解析

本文详细解析了从Vivado导出硬件到Xilinx SDK进行调试与FPGA硬件验证的全流程。重点阐述了正确导出包含bitstream的硬件平台、创建合适的SDK工程、配置Debug会话以编程FPGA,并介绍了串口验证、自定义IP测试以及使用ILA进行软硬件联合调试的高级技巧,帮助开发者高效完成FPGA系统的软硬件协同开发与问题排查。

weixin_28327051的博客 311

第十五届蓝桥杯省赛C/C++B组H题【拔河】题解(AC)

由于枚举三个点肯定会超时,所以只能枚举两个点,我们尝试枚举第一个区间。的复杂度,需要找出右区间中和左区间的和最相近的值,可以考虑使用。一开始,我们将所有可能的右区间的区间和,都插入。做法同上,用前缀和优化数组求和的过程。的数组和差值最小是多少,其中。递增进行枚举左区间,当。的数组,求两个子数组。为左端点的区间的和。

一只大采集~ 5283

excel中VBA提取文件夹名称的方法

内容提要:文章介绍excel中使用VBA代码来提取文件夹名称的具体操作步骤。对Excel感兴趣的朋友可加Excel学习交流群:284029260(www.itblw.com)   在网上看到有人用批处理命令提取文件夹名称。其实在excel中使用VBA代码也同样可以提取文件夹名称。   比如需要将电脑E盘“论坛工作资料”文件夹下面的所有文件夹名称提取出来放在excel工作表的A列,可以使用下面的

5561

VS Code配置MinGW64编译非线性优化库NLopt

VS Code用MinGW64编译C++代码安装MSYS2软件并配置非线性优化库NLopt和测试引用库代码的完整具体步骤。:若使用非UCRT版本(如传统MinGW64),替换所有路径中的。库文件会自动安装到MSYS2的。

weixin_30777913的博客 903

关于利用EXCEL VBA 获取单元格地址、选取、复制、分列到其它工作薄中以及遍布文件夹的操作

1.EXCEL VBA遍布文件夹的操作 关于VBA遍历文件夹主要用的是提供的Application.FileDialo函数来由个人进行自由选择,通过获取选择的文件夹地址之后,通过Dir函数来匹配选取文件夹下的相应的文档。相应的VBA程序代码如下: Dim sel_Path As String '//定义一个选择的文件夹 Dim MyFile As String '//文...

snow__wei的博客 1万+

有限元分析必看:如何用ANSYS检查关键区域的网格质量(附操作截图)

本文聚焦有限元分析中决定仿真精度的关键环节,详细讲解了如何利用ANSYS Workbench对关键区域进行网格质量检查与优化。文章提供了从思维转变、实战操作到指标解读的完整流程,强调通过命名选择、Worksheet过滤器等工具实现定向检查,并给出了针对结构分析的关键区域网格质量阈值建议,帮助工程师提升仿真结果的可靠性与效率。

weixin_29200741的博客 470

【卫星语音通信】神经网络语音编解码算法:AudioDec

最新研究表明,通过深度学习模型对语音信号进行智能压缩与重建,可在12 kbps码率下实现48 kHz采样率的高保真语音还原,其主观音质评分(MOS)可达3.9分(满分4.27分),远超传统参数编码技术。这意味着未来卫星电话的通话质量有望达到CD级水准,而蜂窝网络的语音业务带宽需求可降低60%以上,为蜂窝和卫星网络中的大规模物联网语音交互铺平道路。它的诞生为神经音频编解码技术带来了一次重要升级,有助于让未来实时语音交互更流畅、更清晰,也让我们进一步体验到人工智能与音频信号处理结合所带来的创新可能性。

u011376987的博客 1473

access vba打开excel文件_Excel VBA和文件夹-1.4打开文件夹内excel文件的方法

Excel VBA和文件夹-1.4打开文件夹内excel文件的方法前景提要在之前我们学习了通过VBA来创建文件夹的方法,(忘记了的话,可以拉到最下面,有传送门),基本上可以满足大家日常工作中创建文件夹的需求了,那么如果我们的需求调转过来,如果打开电脑中指定的文件件呢? 这确实和之前的思路是相反的,之前我们是主动创建,现在我们是去打开电脑中已经存在的文件夹,那么我们需要如何操作呢?思路 我们先回忆下...

weixin_26850069的博客 2270

Qt开发中彻底解决中文乱码问题

中文乱码问题主要源于编码不一致需要同时设置控制台和Qt应用程序的编码确保项目文件和环境配置的编码一致文件操作时注意指定正确的编码。

qq_53832058的博客 3406

VBA文件对话框的应用(VBA打开文件、VBA选择文件、VBA选择文件夹)

在VBA中经常要用到文件对话框来进行打开文件、选择文件或选择文件夹的操作。用Microsoft Office提供的文件对话框比较方便。用法如下Application.FileDialog(fileDialogType)fileDialogType      MsoFileDialogType 类型,必需。文件对话框的类型。   MsoFileDialogType 可为以下 MsoFile

cactusz的博客 3万+

制造业批次管理中双计量单位动态转换的实践指南

本文详细介绍了制造业批次管理中双计量单位动态转换的实践指南,特别是在SAP系统中的配置与操作步骤。通过实际案例展示了如何解决采购与生产部门计量单位不一致的问题,提升物料管理效率。重点讲解了批次特性配置、移动类型调整及常见问题排查方法,适用于金属加工、化工等多个行业。

weixin_29228203的博客 159

【ZYNQ驱动双AD9361实战】(一)从官方参考设计到自定义移植

本文详细介绍了如何将ADI官方的单AD9361参考设计移植到ZYNQ平台以驱动双AD9361射频板卡。内容涵盖从环境搭建、官方工程架构解析,到硬件HDL工程修改(包括顶层设计、引脚分配及TCL脚本适配)以及Linux设备树软件配置的全流程实战指南,帮助开发者实现自定义双通道射频收发系统。

weixin_29170327的博客 364

vba宏如何快速的把多个excel表合并成一个excel表(便捷高效)

我们需要把多个excel表都放在同一个文件夹里面,并在这个文件夹里面新建一个excel。如图所示: 接下来我们打开新建excel表格,按快捷键Alt+F11进入图示界面,或右键单击sheet1,找到“查看代码”。 然后我们双击箭头所指 的sheet1.将宏代码复制到图示位置。 Sub 合并当前目录下所有工作簿的全部工作表() Dim MyPath, MyName, AWbName Dim Wb As Workbook, WbN As String Dim G As Long Dim Num As

weixin_48149733的博客 2万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

excel VBA基本操作:遍历当前文件夹下的excel文件

经常用到excel,以下是遍历当前文件夹下的excel表。 Sub bl() Dim myPath As String, myFile As String Dim i As Integer Dim Arr() As String myPath = ThisWorkbook.Path &amp;amp;amp; &amp;quot;\*.xls*&amp;quot; myFile = Dir(myPath) ...

weixin_43721369的博客 1万+

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Excel VBA 读取其他的Excel文件内的内容

'---------------------------------------------------初级版-----------------------------------------------'---------------------------------------------------进阶版-----------------------------------------------'----------------------删除空白行----------------------

m0_60646395的博客 5278

利用VBA快速整合多个excel文件

心得(一):关于VBA如何把同一个文件下的所有文件的内容合并到同一个excel文件下 问题:如何把多个格式相同的excel整合到一个excel上,起初想的是可以直接用复制粘贴……但是文件有几百个将近一千个,这么做的话有点暴躁… 解决:首先把所有要整合的excel文件放在一个路径不含有中文名的目录下,然后新建一个excel文件右键sheet点击查看代码,这时候你的画面上会出现一个编辑器,你这这上面利...

deapou的博客 1万+

vba单元格批量赋值,EXCEL——VBA对文件夹下所有表格的特定单元格赋值

image不知道大家有没有遇到过这种情况,一个文件夹下有很多Excel文件,每个文件里面一个或多个表都有一个同样的单元格,比如自己的名字啊、生日啊之类的。这个时候如果要改动这个单元格的内容我们需要一个个改动,就非常麻烦。这个时候我们可以通过VBA的方式来解决这个问题。。image.png如上图,我们这个文件夹下有两个表格,每个表格中都有几个sheet,这几个sheet中有几乎都有一个单元格内容如下...

weixin_42412910的博客 2711
上一篇: Python EXCEL 理论探究:格式转换时处理缺失值方法
下一篇: 从零开始学习Dash和Plotly:基础学习
偷心伊普西隆
博客等级 码龄7年 511粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值