vba:文件夹和文件夹的处理,dir

news/2024/7/7 21:44:46

Option Explicit

'1 判断文件夹是否存在
   'dir函数的第二个参数是vbdirectory时可以返回路径下的指定文件和文件夹,如果结果为"",则表示不存在。
  Sub w1()
    If Dir(ThisWorkbook.path & "\2011年报表2", vbDirectory) = "" Then
       MsgBox "不存在"
    Else
       MsgBox "存在"
    End If
  End Sub

解释:dir

在VBA中,Dir函数被用于返回匹配指定文件名模式的第一个文件或目录的名称。下面是Dir函数的语法和使用方法:

Dir([path], [attributes])

参数

  • path(可选):要检索的路径字符串。如果省略,将从当前目录开始搜索。
  • attributes(可选):指定要搜索的文件类型。默认包括普通文件和文件夹。可以通过组合以下常量来定义:
常量描述
vbNormal文件或目录
vbReadOnly只读文件
vbHidden隐藏文件或目录
vbSystem系统文件或目录
vbArchive档案文件
vbDirectory返回目录,默认也会返回文件
vbAlias返回文件或目录的别名(仅 macOS)
vbVolume返回卷标(移动设备路径。仅 macOS)

返回值

  • String:文件/目录的名称。如果没有找到匹配的文件,则返回空字符串""。

示例

以下示例演示如何使用Dir函数获取符合条件的文件名:

Sub DirExample()

    Dim MyFile As String
    
    ' 获取C:\Users\YourName\Desktop文件夹下的所有.xls文件名
    MyFile = Dir("C:\Users\YourName\Desktop\*.xls")
    
    ' 循环显示所有满足条件的文件名
    Do While MyFile <> ""
        Debug.Print MyFile
        MyFile = Dir()
    Loop
    



End Sub
'2 新建文件夹
   'Mikdir语句可以创建一个文件夹
    Sub w2()
      MkDir ThisWorkbook.path & "\Test"
    End Sub


   案例:

Sub CreateNewDirectory()

    Dim PathStr as String
    
    ' 创建名为"NewFolder"的新目录在"C:\Users\YourName\Desktop"
    PathStr = "C:\Users\YourName\Desktop\NewFolder"
    MkDir PathStr
    
End Sub
 


'3 删除文件夹
   
   'RmDir语句可以删除一个文件夹,如果想要使用 RmDir 来删除一个含有文件的目录或文件夹,则会发生错误。
   '在试图删除目录或文件夹之前,先使用 Kill 语句来删除所有文件。
   
    Sub w3()
      RmDir ThisWorkbook.path & "\test"
    End Sub
'4 文件夹重命名
    Sub w4()
      Name ThisWorkbook.path & "\test" As ThisWorkbook.path & "\test2"
    End Sub
     
'5 文件夹移动
     '同样使用name方法,可以达到移动的效果,而且连文件夹的文件一起移动
    
    Sub w5()
      Name ThisWorkbook.path & "\test2" As ThisWorkbook.path & "\2011年报表\test100"
    End Sub
    
'6 文件夹复制
        Sub CopyFile_fso()
        Dim fso As Object
        Set fso = CreateObject("Scripting.FileSystemObject")
        fso.CopyFolder ThisWorkbook.path & "\测试新建文件夹", ThisWorkbook.path & "\2011年报表\"
        Set fso = Nothing
        End Sub

解释:Scripting.FileSystemObject

CreateObject("Scripting.FileSystemObject") 在 VBA 中用于创建一个文件系统对象,使代码能够访问和操作计算机上的文件或文件夹。

以下是使用 FileSystemObject 的一些常见操作:

  1. 获取文件大小

要获取文件的大小,可以使用 FilesystemObjectGetFile 方法和 Size 属性,例如:

Dim fs As Object
Set fs = CreateObject("Scripting.FileSystemObject")
Dim file As Object
Set file = fs.GetFile("C:\Users\example.txt")
MsgBox file.Size ' 返回字节数

  1. 创建文件夹

要在指定路径中创建新文件夹,可以使用 Folder 对象的 CreateFolder 方法,例如:

Dim fs As Object
Set fs = CreateObject("Scripting.FileSystemObject")
fs.CreateFolder "C:\NewFolder"

  1. 复制、移动和删除文件

要复制文件,使用 FilesystemObjectCopyFile 方法:

Dim fs As Object
Set fs = CreateObject("Scripting.FileSystemObject")
fs.CreateFolder "C:\NewFolder"
同样的,要移动文件,使用 MoveFile 方法:

Dim fs As Object
Set fs = CreateObject("Scripting.FileSystemObject")
fs.MoveFile "C:\OldFolder\example.txt", "C:\NewFolder\example.txt"


要删除文件,使用 DeleteFile 方法:

Dim fs As Object
Set fs = CreateObject("Scripting.FileSystemObject")
fs.DeleteFile "C:\OldFolder\example.txt"
 

  1. 复制、移动和删除文件夹

要复制文件夹,使用 FilesystemObjectCopyFolder 方法:

Dim fs As Object
Set fs = CreateObject("Scripting.FileSystemObject")
fs.CopyFolder "C:\OldFolder", "C:\NewFolder"
 

同样的,要移动文件夹,使用 MoveFolder 方法:

Dim fs As Object
Set fs = CreateObject("Scripting.FileSystemObject")
fs.MoveFolder "C:\OldFolder", "C:\


'7 打开文件夹
   '使用shell函数桌面管理程序打开文件夹
    Sub w7()
      Shell "explorer.exe " & ThisWorkbook.path & "\2011年报表", 1
    End Sub

 解释:shell函数

在 VBA 中,Shell 函数的语法如下:

 

复制代码

Shell (pathname As String, [windowstyle As VbAppWinStyle = vbMinimizedFocus])

其中 pathname 参数是要运行的可执行文件的完整路径和名称,例如 C:\Program Files\Microsoft Office\Office14\WINWORD.EXE

windowstyle 参数是可选的,它指定了应用程序窗口的外观。以下是可用的 VbAppWinStyle 常量:

  • vbHide:隐藏窗口并激活另一个窗口。
  • vbNormalFocus:以正常大小和位置显示窗口,并将焦点设置为窗口。
  • vbMinimizedFocus:以最小化的形式显示窗口,并将焦点设置为窗口。
  • vbMaximizedFocus:以最大化的形式显示窗口,并将焦点设置为窗口。
  • vbNormalNoFocus:以正常大小和位置显示窗口,但不将焦点设置为窗口。
  • vbMinimizedNoFocus:以最小化的形式显示窗口,但不将焦点设置为窗口。

例如,以下代码将打开 Microsoft Word 并最小化它的窗口

Sub OpenWord()
    Shell "C:\Program Files\Microsoft Office\Office14\WINWORD.EXE", vbMinimizedFocus
End Sub
请注意,使用 Shell 函数启动另一个应用程序后,您可能需要等待其加载并准备好处理用户输入。您可以使用 VBA 的 Wait 函数来暂停代码执行,例如:


http://lihuaxi.xjx100.cn/news/1049370.html

相关文章

测绘与设计之间的鸿沟:坐标系,教你如何将CAD与测绘数据准确叠加

一、背景 2008年&#xff0c;我国推出了2000国家大地坐标系&#xff08;以下简称国家2000坐标系&#xff09;&#xff0c;截至2022年&#xff0c;国家2000坐标系在自然资源领域已经取得了较高的普及率&#xff0c;但在工程建设领域的普及率依旧比较低&#xff0c;很多工程项目…

如何将matlab的m文件转换成python文件

因为matlab的内存实在太大了&#xff0c;所以我只在实验室电脑安装了matlab&#xff0c;自己电脑没有安装&#xff0c;现在跑实验需要把matlab文件转成python文件。在网上找到可以使用smop小工具。 我是在本地的anaconda转换的。先创建一个新环境到指定路径 conda create --pr…

如何做好技术管理

1、帮助员工做好个人中长期发展目标规划 主管应该跟员工一起确认员工任期内的中长期成长和发展目标&#xff0c;让员工能够在任期内发挥最大的作用和价值&#xff0c;同时能够尽可能地让员工在任期内达成自己期望的成长目标。对管理者来说有一件很重要的事情&#xff0c;就是能…

大数据实战 --- 世界新冠疫情数据分析

目录 开发环境 数据描述 功能需求 数据准备 统计计算 Hbase Hive 分析数据 开发环境 HadoopHiveSparkHBase 启动Hadoop&#xff1a;start-all.sh 启动zookeeper&#xff1a;zkServer.sh start 启动Hive&#xff1a; nohup hiveserver2 1>/dev/null 2>&1 &…

深度学习第J6周:ResNeXt-50实战解析

目录 一、模型结构介绍 二、前期准备 三、模型 三、训练运行 3.1训练 3.2指定图片进行预测 &#x1f368; 本文为[&#x1f517;365天深度学习训练营]内部限免文章&#xff08;版权归 *K同学啊* 所有&#xff09; &#x1f356; 作者&#xff1a;[K同学啊] &#x1f4cc; …

WebServer项目(四)->(基于Proactor的c++)Web服务器简介及简单实现

基于Proactor的cWeb服务器项目 WebServer项目(四)-&#xff1e;(基于Proactor的c)Web服务器简介及简单实现1.Web Server&#xff08;网页服务器&#xff09;2.HTTP协议(应用层的协议)3.HTTP 请求报文格式4.HTTP响应报文格式5.HTTP请求方法6.HTTP状态码7.服务器编程基本框架8.两…

日本PSE认证日本的電気用品安全法METI备案

日本的電気用品安全法&#xff08;PSE认证&#xff09;法规要求日本的采购商在购进商品后一个月内必须向日本METI注册申报&#xff0c;并必须将采购商名称或ID标在产品上&#xff0c;以便在今后产品销售过程中进行监督管理&#xff0c;完成后将获得電気用品製造事業届出書&…

TCP知识

计算机网络模型 OSC(Open System Interconnect)采用分层的结构化技术&#xff0c;共分七层&#xff1a;物理层&#xff0c;数据链路层&#xff0c;网络层&#xff0c;传输层&#xff0c;会话层&#xff0c;表示层&#xff0c;应用层。 TCP/IP模型共分四层&#xff1a;链路层&…