精华内容
下载资源
问答
  • VBA获取某文件夹下所有文件,或子文件目录的文件 '------------------------------------------- '获取某文件夹下的所有Excel文件 '------------------------------------------- Sub getExcelFile(sFolderPath ...
    <strong>VBA获取某文件夹下所有文件,或子文件目录的文件</strong>
    
    
    
    '-------------------------------------------
    '获取某文件夹下的所有Excel文件
    '-------------------------------------------
    Sub getExcelFile(sFolderPath As String)
    On Error Resume Next
    Dim f As String
    Dim file() As String
    Dim x
    k = 1
    
    ReDim file(1)
    file(1) = sFolderPath & "\"
    
        f = Dir(file(1) & "*.xlsx")     '通配符*.*表示所有文件,*.xlsx Excel文件
        Do Until f = ""
           'Range("a" & x) = f
           Range("a" & x).Hyperlinks.Add Anchor:=Range("a" & x), Address:=file(i) & f, TextToDisplay:=f
            x = x + 1
            f = Dir
        Loop
    
    End Sub
    
    '-------------------------------------------
    '获取某文件夹下的所有文件和子目录下的文件
    '-------------------------------------------
    Sub getAllFile(sFolderPath As String)
    'Columns(1).Delete
    On Error Resume Next
    Dim f As String
    Dim file() As String
    Dim i, k, x
    x = 1
    i = 1
    k = 1
    
    ReDim file(1 To i)
    file(1) = sFolderPath & "\"
    
    '-- 获得所有子目录
    Do Until i > k
        f = Dir(file(i), vbDirectory)
            Do Until f = ""
                If InStr(f, ".") = 0 Then
                    k = k + 1
                    ReDim Preserve file(1 To k)
                    file(k) = file(i) & f & "\"
                End If
                f = Dir
            Loop
        i = i + 1
    Loop
    
    '-- 获得所有子目录下的所有文件
    For i = 1 To k
        f = Dir(file(i) & "*.*")    '通配符*.*表示所有文件,*.xlsx Excel文件
        Do Until f = ""
           'Range("a" & x) = f
           Range("a" & x).Hyperlinks.Add Anchor:=Range("a" & x), Address:=file(i) & f, TextToDisplay:=f
            x = x + 1
            f = Dir
        Loop
    Next
    End Sub
    

    展开全文
  • VBA 遍历所有文件夹内容

    千次阅读 2020-08-28 23:14:56
    今天讲讲VBA遍历所有文件夹,之前提到过,感觉这个很是实用,以为如果要批量导入的话,能遍历操作效率杠杠的 一、VBA遍历单个文件夹 下面的所有内容之前已经学过,再把代码贴一下,主要是通过Dir实现: ...

    今天讲讲VBA遍历所有文件夹,之前提到过,感觉这个很是实用,以为如果要批量导入的话,能遍历操作效率杠杠的

     

    一、VBA遍历单个文件夹

    下面的内容之前已经学过,再把代码贴一下,主要是通过Dir实现:

    Private Sub bianli(str As String)
        '遍历功能实现区
        Dim fil As String
        
        fil = Dir(str & "\*")
        Do While fil <> ""
            MsgBox fil
            fil = Dir
        Loop
    End Sub
    
    Sub runBianli()
        Dim str As String
        
        '下面一段功能是让用户选择一个文件夹
        With Application.FileDialog(msoFileDialogFolderPicker)
            .InitialFileName = "E:\"
            .Title = "请选择遍历的文件夹"
            .Show
            If .SelectedItems.Count > 0 Then
                str = .SelectedItems(1)
            End If
        End With
    
        '根据用户选择的文件夹进行遍历
        bianli (str)
        
    End Sub

     

    二、VBA遍历所有子文件夹

    如果需要对包括子文件夹在内的所有文件都进行遍历怎么办呢?想着和上面一样,用Dir递归调用,如果是文件,就进行相应的操作,如果是文件夹,把文件夹作为参数传给自己。但是呢dir循环判断实在太繁琐且容易出错,怎么办呢?

     

    经过一番查找,发现了FileSystemObject 对象。

    先说说FileSystemObject 对象能做什么:

    FSO 对象模型可以实现文件(夹)的创建、改变、移动和删除等常见操作,也可以获取文件(夹)的名称、大小、属性、创建日期或最近修改日期等信息,还可以检测是否存在指定的文件夹。通过FSO 对象模型可以获取当前系统驱动器信息,如驱动器的种类(CD-ROM还是可移动磁盘)、磁盘剩余空间等等。

     

    看了一下介绍,发现这玩意很实用有没有,对文件和文件夹的操作基本都可以实现呢

    比如说创建完了FileSystemObject 对象,再利用FSO创建个Folder对象,然后用folder的SubFolders返回所有的子文件夹;files返回所有文件,是不是简直很简单呢!

     

    所以具体实现遍历的话,代码如下:

    Private Sub bianli(fld As Folder)
        '遍历功能实现区
        Dim fil As File
        Dim subFld As Folder
        
        '如果是文件夹,就调用自身
        For Each subFld In fld.SubFolders
            bianli subFld
        Next
    
        '如果是文件,就可以进行操作
        For Each fil In fld.files
            '——这里就是写遍历完要干的事啦——
            
            '——这里就是遍历完要干的事啦——
        Next
        
    End Sub
    
    Sub runBianli()
        Dim str As String
        Dim fso As New FileSystemObject
        Dim fld As Folder
        
        '下面一段功能是让用户选择一个文件夹
        With Application.FileDialog(msoFileDialogFolderPicker)
            .InitialFileName = "E:\"
            .Title = "请选择遍历的文件夹"
            .Show
            If .SelectedItems.Count > 0 Then
                str = .SelectedItems(1)
            End If
        End With
        
        '注意:此时不能传递Str啦,因为需要传递文件夹对象而不是字符串作为参数
        Set fld = fso.GetFolder(str)
        bianli fld
    End Sub

     

    搞定!

     

     

    展开全文
  • - 需要定期清理当前文件夹下一个子文件夹里的Excel格式文件 - 整个文件夹也可能复制到其它地方使用 - 简单来说:需删除bat脚本所在文件夹一级文件夹满足条件的文件删除文件所在文件夹 bat脚本位置 ...

    微信公众号原文

    系统:Windows 7
    软件:Excel 2010

    介绍使用场景or困惑:

    - 需要定期清理当前文件夹下一个子文件夹里的Excel格式文件
    - 整个文件夹也可能复制到其它地方使用
    - 简单来说:需删除bat脚本所在文件夹下一级文件夹下满足条件的文件

    拟删除文件所在文件夹
    1.png

    bat脚本位置
    2.png

    思考

    1. 核心需求:Del
    2. 寻找bat中类似VBA中的ThisWorkbook.Path,幸好还是有的,哈哈
      • 方法1:%~dp0
      • 方法2:%cd%

    代码

    方法1:

    Del %~dp0【1】输入\*.xlsx

    方法2:

    Del %cd%\1】输入\*.xlsx

    删除前

    3.png

    删除后

    4.png

    代码解读

    1. %cd%和%~dp0效果差别如下,主要是差一个“\”
    2. 另外的话,其实他们适用范围不同,这个就不在这里说了

    5.png


    以上为本次的学习内容,下回见

    如发现有错误,欢迎留言指出


    更多精彩,请关注微信公众号
    扫描二维码,关注本公众号

    公众号底部二维码.jpg

    展开全文
  • 前景提要之前我们在上一系列也是学了一些关于...比方说文件夹删除,移动等功能,dir()就望尘莫及了,所以这一系列我们继续深入研究下vba文件夹的操作,我们今天用更加强大的方式来操作,那就是FSO思路FSO,并不属...

    前景提要

    之前我们在上一系列也是学了一些关于VBA创建文件夹的相关操作,我们是通过dir()方法来实现的,如果是简单的文件夹的创建的话,我们完全可以通过这个方法,但是在进行VBA代码执行的过程中,如果涉及文件夹的其他的更加深入操作,比方说文件夹的删除,移动等功能,dir()就望尘莫及了,所以这一系列我们继续深入研究下vba和文件夹的操作,我们今天用更加强大的方式来操作,那就是FSO

    思路

    FSO,并不属于VBA本身就有的功能,他需要调用其他的资源才可以使用的,无法在代码中直接使用,我们可以通过两种方式来进行调用,一种就是前期引用,如下

    2d8710b715bbaaaf226c37c3b2652e77.png

    这种方法叫做前期引用,有好处也有坏处,好处就是初学者通过这个方法绑定之后,在后续写代码的过程中,就会有相关的代码提示,不用去刻意记那么多的代码和方法,坏处呢?那就是只有你的电脑能用,如果给其他人用的话,他的电脑可能就会用不了,因为其他人的电脑可能没有装过这个东西,所以为了通用性,我们尽量选择在代码中采用后期声明引用的方法,如何用?看下面的代码!

    成功的引用FSO之后,我们就可以进行文件夹的创建了,我们在创建文件夹的时候,如果碰到重名文件夹是不允许创建的,这是window系统自身就存在的规定,我们要遵守,所以我们在创建文件夹之前需要先判断文件夹是否存在,存在就可以创建,不存在就不能够创建,好,有了方法,我们来看看代码

    代码区

    Sub test()

    Set objFSO = CreateObject("Scripting.FileSystemObject")

    NewFolderName = ThisWorkbook.Path & "\" & "测试"

    If objFSO.FolderExists(NewFolderName) Then

    objFSO.DeleteFolder (NewFolderName)

    Set myfolder = objFSO.createfolder(NewFolderName)

    Else

    Set myfolder = objFSO.createfolder(NewFolderName)

    End If

    End Sub

    效果如图:

    a7f32b9a469e19e56aeba0af6c3cf108.png

    我们成功的在当前文件所在的地方创建了一个名为测试的文件夹。

    代码解析

    首先我们先通过后期绑定的方式申明FSO

    Set objFSO = CreateObject("Scripting.FileSystemObject")

    然后获得当前文件所在的位置,加上测试两个字,构成新的路径。

    path在VBA中,主要是获得文件的路径的,这里的路径所在文件夹位置的上一级,比方说“D:/新建文件夹/测试.xlsx”他的path就是““D:/新建文件夹”并不是完整的路径,这点大家要注意,这里我们回到代码中去实操下更清楚,我的文件是放在桌面的,然后调试

    a1673efb2de2f2fa5e222a7e0de050ab.png

    我们可以看到路径出来了,但是并不是完整的路径,是上一级的路径,这点大家要留意使用。

    然后进入今天的重点,FSO的运用了。

    首先我们要判断我们要创建的文件夹在当前桌面是否存在同名的文件夹,大家都知道同名的话,是无法创建成功的,所以我们要先判断

    objFSO.FolderExists(NewFolderName)

    就是这样的效果,语法结果就是FolderExists(NewFolderName),文件夹是否存在,如果存在呢,肯定弹窗报错无法创建,换一个名字了,但是我们这里为了程序运行的顺利,我们将原来存在的文件夹删除,那么删除文件件怎么操作呢,DeleteFolder (NewFolderName),就是删除文件夹的操作,没有了同名文件夹就可以创建文件夹了,这就可以用FSO创建文件夹了。这里要注意,在创建文件夹的时候,前面要有一个set。当然啦,如果同名文件不存在嘛,自然更简单啦,直接调用创建方法直接创建就好啦

    Set myfolder = objFSO.createfolder(NewFolderName)

    完整代码加注释

    Sub test()

    Set objFSO = CreateObject("Scripting.FileSystemObject") '申明一个ADO,固定搭配

    NewFolderName = ThisWorkbook.Path & "\" & "测试" '说明文件夹的名字

    If objFSO.FolderExists(NewFolderName) Then '判断当前路径是否存在同名文件夹

    objFSO.DeleteFolder (NewFolderName) '如果存在,删除同名文件夹

    Set myfolder = objFSO.createfolder(NewFolderName) '删除之后,创建文件夹

    Else

    Set myfolder = objFSO.createfolder(NewFolderName) '不存在同名文件夹,直接创建

    End If

    End Sub

    延伸复习一下,如果用我们之前学习过的mkdir()是否可以实现呢?尝试下

    举报/反馈

    展开全文
  • 学习资源:《Excel VBA从入门到进阶》第48集 by兰色幻想忘了之前老师有没有讲过Dir函数了,还是写一下吧,再开始正文吧:Dir函数:返回一个 String,它表示与指定路径文件、目录或文件夹的名称。语法:Dir ...
  • '设置统计公式为:SUBTOTAL(9, 该级下所有行),该函数自动忽略选中区域内含有SUBTOTAL公式的单元格 .Formula = "=SUBTOTAL(9, " & TR_COL_COUNT & aKeys(j) + 1 & ":" & TR_COL_COUNT & i - 1 & ")" '设置背景色...
  • 依照下面的MkDir语句语法,你可以创建一个新文件夹: MkDir Path Path明确你要创建的新文件夹名称。...3. 获取当前文件夹名称: ?CurDir 结果如下: 使用RmDir函数来删除不需要的文件夹。该函数的语法如下:
  • vba 压缩文件 使用方便 (Ease of use) There are many uses for zip folders. Previously, saving disk space was the primary purpose, but today that often isn't very important; more the option for ...
  • 要求:将文件夹1-1.xlsx、文件夹1-1.xlsx移动到文件夹1,依次类推代码及说明:Sub 移动文件()Dim MyFold As Object, MyFile As ObjectDim ipath As String, TargetFolder As String'获取当前文件夹的路径ipath = ...
  • 如何用VBA批量删除文件

    千次阅读 2018-06-09 23:36:07
    Sub 批量删除文件() mypath = ThisWorkbook.Path f = Dir(mypath &amp; "\*.xlsx") '查找当前路径符合条件的文件名 While f &lt;&gt; "" '一直到F找不到合条件的就结束循环 ...
  • 时隔N年再次拿起VBA-VBA统计文件夹中的excel表格各sheet页行数如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少...
  • VBA 有很多用于文件操作的语句和函数,能满足绝大多数场景文件操作要求。本文将按操作目的一一进行介绍。
  • VBA操纵目录及文件

    2021-10-02 16:08:20
    VBA操纵目录及文件VBA自带的命令1. 查询目录或文件是否存在2. 创建目录3.删除目录或文件4. 目录和文件改名5.复制文件6.取得当前目录, 更改当前目录用FSO对象1.用FSO 判断文件或目录是否存在2.用FSO 创建目录3.用...
  • Excel VBA之FSO-2.3文件夹的移动前景提要我们之前接触了如何通过FSO来实现文件夹的复制操作,此操作需要注意的一点就是如果当前文件夹中有历史版本的同名文件夹的话,他会直接覆盖原来的数据,如果需要保存历史数据...
  • 学习Excel技术,关注微信公众号:excelperfect在《VBA进阶 | 文件操作8:认识Windows Scripting Host》中,我们介绍了FileSystem对象模型。本文将详解其中的File对象与Files集合。File对象File对象表示某种类型的...
  • 几经修改,终于算是自己满意的一个VBA程序 1、考虑了Excel新建Sheet的命名规则 2、考虑的xls 和 xlsx文件(office2007前后的版本) 3、考虑的子程序会不会对使用者...'合并文件夹所有Excel文件(目前仅限于..
  • 这个小程序的前提是指定的文件夹里装的全部是图片格式的文件 步骤1: 添加一个filesystemobject引用,工具--->引用---->microsoft scripting runtime 步骤2: 添加模块,并添加以下代码 Option ...
  • 文件压缩和解压缩,目前在实际工作中用的不多,先留着吧,需要时再来看看。'获得rar的安装路径 Function GetSetupPath(AppName As String) Dim WSH As Object Set WSH = CreateObject("Wscript.Shell") ...
  • 文件夹导航图 (代码运行背景) Option Compare Database '---------------------------------------------------...' 在名为 2020 的文件夹下包含 1-12月 以月份命名(如:10月、5月)的文件夹,以及其他非相关文件夹
  • 文件系统对象FSO的英文全称是File System Object ,这种对象模型提出了有别于传统的...FSO 对象模型不仅可以象使用传统文件操作语句那样实现文件的创建、改变、移动和删除,而且可以检测是否存在指定的文件夹,如果存
  • 一个excel文件就是一个excel工作簿例如abc.xls,一个工作簿中包含1个到若干个工作表例如sheet1,也就是说工作簿是由工作表组成的。 下面我们就来了解一下工作簿的操作 打开工作簿 Application.displayAlerts=...
  • 递归删除当前文件夹当前文件夹下所有文件。 Imports System.IOModule Module1 Sub Main() DeleteFoldersAndFiles("C:/A") Console.ReadLine() End Sub Private Sub DeleteFoldersAnd
  • 遍历文件在Windows可以用 FindFirstFile/FindNextFile 这组API(另外貌似可以使用SHGetDataFromIDList,也可以使用boost),一般是通过递归实现,比如: ? 1 2 3 4
  • 任务介绍 在日常工作中,我们经常会遇到需要汇总多个表格的数据,将它们合并到一个表格里的情况。虽然复制粘贴大法好,但如果让你汇总几十人...在文件夹中新建一个Excel文件用于汇总并运行VBA程序; 通过VBA程序获取...
  • 我用Office 2019编辑过的一批xls文件,在Office 2010无法打开,但另存为xlsx后可以,所以需要将xls批量转换为xlsx。 此时,我的逗比同事要去抖音给我搜教程…… 在不借助第三方工具的情况,使用Excel内置的VBA...
  • 本代码示例用于批量删除第6, 7, 9, 10, 12, 13, 15, 16行的代码,使用这个批量删除行的代码要注意以下几点:1)该代码只用于批量删除代码所在文件目录(不含子目录)与 “*.xls*”后缀匹配的所有工作薄l所有工作表...
  • Excel-VBA操作文件四大方法

    万次阅读 2017-12-21 15:26:48
    在我们日常使用Excel的时候,不仅会用到当前Excel文件的数据,还经常需要访问其他的数据文件。这些数据文件可能是Excel文件、文本文 件或数据库文件等。经常有朋友会问如何在vba代码里操作这些数据文件?本文就
  • 使用FileDialog对象选择文件文件夹

    千次阅读 2020-05-25 05:50:52
    总览 通常需要提示Access项目的操作员选择文件文件夹。 当然,可以允许他们徒手键入它,甚至可以将其粘贴到另一个应用程序中,但是通常,操作员比大多数Windows应用程序(带有文件)更容易从现有文件结构中选择它/...
  • * 获取目录文件 * * @param realpath * @param files * @return */ public static List&lt;File&gt; getFiles(String realpath) { List&lt;File&gt; files = new ArrayList&...
  • 这几天帮客户做个系统,需要获到系统环境变量及一些特殊文件夹。收集和研究了各种代码。记录一下,以免自己忘记,同时也分享一下给大家,避免大家遇到同样问题时,再去花费大量时间。 一、我个人整理出来的一些...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,632
精华内容 652
关键字:

vba删除当前文件夹下所有文件