开启左侧

VBA的文件操作

[复制链接]
etthink 发表于 2019-10-29 20:06:26 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
文件操作是指操作系统级别的,不是打开文件,对文件内容操作。我们当然可以创建文件系统对象操作文件,但是,最简单的还是使用VBA提供的标准的文件操作功能。最常见的就是文件或文件夹的增、删、改。

1、创建和删除文件夹(增、删):

      创建:MkDir path,例如:MkDir ThisWorkbook.Path & "\Temp"

      删除:RmDir path,例如:RmDir ThisWorkbook.Path & "\Temp"

2、复制文件(增):FileCopy source, destination,例如:

      FileCopy ThisWorkbook.Path & "\old" , ThisWorkbook.Path & "\new"

3、删除文件(删):Kill pathname,例如:

      myFile = ThisWorkbook.Path & "\song.xls"

      If Dir(myFile) <> "" Then Kill myFile

4、重命名文件或者文件夹(改):Name oldpathname As newpathname,例如:

      Name ThisWorkbook.Path & "\old" As ThisWorkbook.Path & "\new"

5、最后说一下Dir这个函数,最常用的是判断文件或者文件夹是否存在,例如:

      if Dir(ThisWorkbook.Path & "\song.xls", vbNormal) <> "" then

其实这个函数功能很强大,可以根据需要,返回指定路径下所有文件名,对于处理多个文件特别有用。以前做过一个文字替换工具,替换文件夹下所有Word文件中的相应文字,就是用这个函数返回所有文件名的。

Dir[(pathname[, attributes])]

参数pathname是可选的,用来指定文件名的字符串表达式,可能包含目录或文件夹、以及驱动器。如果没有找到pathname,则会返回零长度字符串 ("")。

参数attributes是可选的,常数或数值表达式,其总和用来指定文件属性,如下表所示。如果省略,则会返回不包含属性的匹配文件。

常数
   


   

描述

vbNormal
   

0
   

(缺省) 指定没有属性的文件。

vbReadOnly
   

1
   

指定无属性的只读文件。

vbHidden
   

2
   

指定无属性的隐藏文件。

VbSystem
   

4
   

指定无属性的系统文件,在Macintosh中不可用。

vbVolume
   

8
   

指定卷标文件;如果指定了其它属性,则忽略。vbVolume 在Macintosh中不可用。

vbDirectory
   

16
   

指定无属性文件及其路径和文件夹。

vbAlias
   

64
   

指定的文件名是别名,只在Macintosh上可用。

注意 在第一次调用Dir函数时,必须指定pathname,否则会产生错误。下面是个例子:

    Sub mydir()
        Dim mydir As String
        Dim Fno As Integer
        
        Fno = 1
        Range("A:A").ClearContents
        mydir = Dir(ThisWorkbook.Path & "\*.xls", vbNormal)
        Do While mydir <> ""
            Cells(Fno, 1) = mydir
            mydir = Dir
            Fno = Fno + 1
        Loop
    End Sub

mydir过程使用Dir函数在代码所在工作簿的文件夹中查找所有的Excel文件,找到后写入到工作表的A列单元格中。Dir函数会返回匹配 pathname参数的第一个文件名,若想得到其他匹配pathname参数的文件名,需再一次调用Dir函数,且不要使用参数。如果已没有合乎条件的文件,则Dir函数会返回一个零长度字符串 ("")。


学教育技术,上教育技术论坛!http://www.etthink.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


11关注

460粉丝

7773帖子

推荐阅读更多+
会员达人更多+
广告位

最新信息

更多+

关注我们:教育技术人

官方微信

官方微博

教育技术热线:

13955453231

学教育技术,上教育技术论坛!

教育技术论坛征稿范围:教育技术应用案例、教程文章、优秀作品等。

Email:sf@etthink.com

Copyright   ©2007-2026  应用思考-教育技术论坛  Powered by©Discuz!  技术支持:且行资源    ( 皖ICP备10014945号-4 )