大家好,我们今日讲解"VBA信息获取与处理"教程中第十七个专题"文件及文件夹信息的获取及操作"的第三节"利用VBA获取文件的信息和属性",这个专题是非常实用的知识点,希望大家能掌握利用。教程会提供配套的程序文件。

第三节 利用VBA获取文件的信息和属性

我们在识别某个文件的时候,基本的操作首先是看资源管理器中的信息,其次是右键,点击属性,查看相关的介绍:

我们在写代码的时候遇到需要利用这些信息的情况,该如何去处理呢?今日这讲的内容就来是如何获得文件的信息及属性。

1 利用内置函数的方法获取信息

1)文件的大小:为了得到文件的大小,我们可以利用FileLen函数

FileLen函数:返回以字节表示的指定文件长度的 Long 值。

语法:FileLen(PathName)

参数:PathName必选。指定文件的 String 表达式。PathName可以包含目录(或文件夹)和驱动器。

备注:如果当调用FileLen函数时指定的文件是打开的,则返回的值表示文件打开时该文件的大小。若要获取打开文件的当前长度,请使用 LOF 函数。

2)文件的最后修改时间:为了获得文件的最后修改时间我们可以使用FileDateTime函数

FileDateTime函数:返回指示创建或最后修改文件的日期和时间的 Date 值。

语法:FileDateTime(PathName)

参数:PathName必选。指定文件的 String 表达式。PathName可以包含目录(或文件夹)和驱动器。

备注:使用FileDateTime函数显示的日期和时间的格式基于系统的区域设置。

3)文件的属性:为了获得文件的属性可以利用GetAttr函数

GetAttr函数:返回表示文件、目录或文件夹的属性的FileAttribute值。

参数:PathName必选。指定文件、目录或文件夹名的 String 表达式。PathName可以包括目录(或文件夹)和驱动器

由GetAttr返回的值是下列枚举值的和:

值 常数 说明

Normal vbNormal 正常。

ReadOnlyvbReadOnly 只读。

Hidden vbHidden 隐藏。

System vbSystem 系统文件。

Directory vbDirectory 目录或文件夹。

Archive vbArchive 自从上次备份后文件已更改。

Alias vbAlias 文件具有不同的名称。

备注:若要确定设置了哪几个属性,请使用 And 运算符对GetAttr函数返回的值以及您想要的个别文件属性值执行按位比较。如果结果不是零,则为命名的文件设置该属性。例如,如果没有设置 Archive 属性,则下列 And 表达式的返回值为零:

Result = GetAttr(FName) And vbArchive

4)设置文件属性,为了设置文件的属性可以利用SetAttr函数

语法:SetAttrPathNameAs String, Attributes As FileAttribute

参数:

PathName必需。指定文件名的 String 表达式。PathName可以包含目录(或文件夹)和驱动器。

Attributes 必需。常数或数值表达式,其和指定文件属性。Attributes 参数枚举值同上返回的枚举值。

2 利用FSO的方法获取信息

为了获取文件的必要信息,我们还可以利用FSO方案,首先利用下面的语句:

Set objFile=object.GetFile(filespec)

参数:

GetFile()返回与指定路径中的文件相对应的File对象。(GetFile方法不支持使用通配符)

Object必需。始终是FileSystemObject的名称。

Filespec必需。文件规范是路径(绝对或相对)到一个特定的文件。

然后利用objFile的一些属性就可以完成获取信息的操作:

1)文件的大小:可以利用Size 属性,对于文件,返回指定文件的大小(以字节为单位)。对于文件夹,返回文件夹中包含的所有文件和子文件的大小(以字节为单位)。

语法:objFile.Size

参数:objFile始终为文件或文件夹对象

2)文件的最后修改时间:可以利用DateCreated属性,返回创建指定文件或文件夹的日期和时间。此为只读属性。

语法:objFile.DateCreated

参数:objFile始终为文件或文件夹对象

3)文件的属性的获得和设置:可以利用Attributes属性设置或返回文件或文件夹的属性。可读/写或只读,具体取决于属性。

语法:objFile.Attributes [= newattributes ]

参数:objFile 必需。始终是文件或文件夹对象的名称。

Newattributes可选。如果提供,则newattributes为指定 object 的属性的新值。

Newattributes参数可以具有以下任意值或以下值的任意逻辑组合。

Constant Value Description

Normal 0 Normal file. No attributes are set.(普通文件,未设置属性)

ReadOnly 1 Read-only file. Attribute is read/write.(只读文件,属性是可读/写的)

Hidden 2 Hidden file. Attribute is read/write.(隐藏文件,属性是可读/写的)

System 4 System file. Attribute is read/write.(系统文件, 属性是可读/写的)

Volume 8 Disk drive volume label. Attribute is read-only(磁盘驱动器卷标,属性是只读的)

Directory 16 Folder or directory. Attribute is read-only.(文件夹或目录,属性是只读的)

Archive 32 File has changed since last backup. Attribute is read/write.(文件自上次备份以来已发生更改,属性是可读/写的。)

Alias 1024 Link or shortcut. Attribute is read-only.(链接或快捷方式,属性是只读的)

Compressed 2048 Compressed file. Attribute is read-only.(压缩文件,属性是只读的)

3 获取文件信息的实际代码

下面我将分别就上述两种方案给出代码如下:

Sub mynzB()

Dim objFso As Object

Dim objFile As Object

Sheets("sheet3").Select

Cells.ClearContents

strPath = ThisWorkbook.Path&Application.PathSeparator

strFile = strPath& "017temp017Test.txt"

'引用FSO

Set objFso = CreateObject("Scripting.FileSystemObject")

If objFso.FileExists(strFile) Then

Range("a1") = "获取文件信息和属性"

Range("a3") = "使用内置函数和语句"

'文件大小:FileLen()

Range("a4") = "文件大小:"

Range("B4") = FileLen(strFile) & " 字节"

'文件的最后修改时间:FileDateTime()

Range("a5") = "文件最后修改的时间:"

Range("B5") = FileDateTime(strFile)

'文件的属性GetAttr()

Range("a6") = "文件属性:"

Range("B6") = GetAttr(strFile)

'设置文件的属性

SetAttrstrFile, vbReadOnly + vbHidden

Range("A8") = "文件"" &strFile& ""已设置了只读和隐藏属性"

Range("A10") = "使用FSO对象"

Set objFile = objFso.GetFile(strFile)

uu = objFile.Attributes

Range("A11") = "文件属性:": Range("B11") = objFile.Attributes

Range("A12") = "文件大小(Bytes):": Range("B12") = objFile.Size

Range("A13") = "创建时间:": Range("B13") = objFile.DateCreated

Range("A14") = "最后修改时间:": Range("B14") = objFile.DateLastModified

'属性更改

objFile.Attributes = objFile.Attributes + 4

Range("A16") = "文件"" &strFile& ""已设置了系统属性"

objFile.Attributes = objFile.Attributes - 3

Range("A18") = "文件"" &strFile& ""已去除了只读和隐藏属性"

objFile.Attributes = objFile.Attributes - 4

End If

Set objFile = Nothing

Set objFso = Nothing

End Sub

代码部分截图:

代码讲解:

1)objFile.Attributes = objFile.Attributes + 4

以上代码是增加了如下的属性:

System 4 System file. Attribute is read/write.(系统文件, 属性是可读/写的)

这一点要特别注意,当减去某属性的时候同样利用的减号。

4 获取文件信息的代码实现效果

当我们点击运行按钮,就会在工作表中得到下面的运行结果;

这样就得到了文件的属性及其他的一些信息。

本节知识点回向:

① 本例中分别利用了哪两种方法得到文件的属性及信息?

② 给出的运行结果中属性的值是累加的,是否理解?

本讲代码参考文件:017工作表.xlsm

积木编程的思路内涵:

在我的系列书籍中一直在强调"搭积木"的编程思路,这也是学习利用VBA的主要方法,特别是职场人员,更是要采用这种方案。其主要的内涵:

1 代码不要自己全部的录入。你要做的是把积木放在合适的位置然后去修正代码,一定要拷贝,从你的积木库中去拷贝,然后修正代码,把时间利用到高效的思考上。

2 建立自己的"积木库"。平时在学习过程中,把自己认为有用的代码放在一起,多积累,在用到的时候,可以随时拿来。你的积木库资料越多,你做程序的思路就会越广。

VBA的应用界定及学习教程:

VBA是利用Office实现个人小型办公自动化的有效手段(工具)。这是我对VBA的应用界定。在取代OFFICE新的办公软件没有到来之前,谁能在数据处理方面做到极致,谁就是王者。其中登峰至极的技能非VBA莫属!

我记得20年前自己初学VBA时,那时的资料甚少,只能看源码自己琢磨,真的很难。20年过去了,为了不让学习VBA的朋友重复我之前的经历,我根据自己多年VBA实际利用经验,推出了六部VBA专门教程,目前教程均通过32位和64位两种OFFICE系统测试。

第一套:VBA代码解决方案 是VBA中各个知识点的讲解,教程共147讲,覆盖绝大多数的VBA知识点,提供的程序文件更是一座不可多得的代码宝库,是初学及中级人员必备教程;目前这套教程提供的版本是修订第二版,程序文件通过32位和64位两种OFFICE系统测试。

第二套:VBA数据库解决方案 数据库是数据处理的专业利器,教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法和实例操作,适合中级人员的学习。目前这套教程提供的是修订第一版教程,程序文件通过32位和64位两种OFFICE系统测试。

第三套:VBA数组与字典解决方案 数组和字典是VBA的精华,字典是VBA代码水平提高的有效手段,值得深入的学习,是初级及中级人员代码精进的手段。目前这套教程提供的版本是修订第一版,程序文件通过32位和64位两种OFFICE系统测试。

第四套:VBA代码解决方案之视频 是专门面向初学者的视频讲解,可以快速入门,更快的掌握这门技能。这套教程是第一套教程(修订一版)的视频讲解,听元音更易接受。这套教程还会额外提供通过32位和64位两种OFFICE系统测试的程序文件。

第五套:VBA中类的解读和利用 这是一部高级教程,讲解类的虚无与肉身的度化,类的利用虽然较少,但仔细的学习可以促进自己VBA理论的提高。这套教程的领会主要是读者的领悟了,领悟一种佛学的哲理。目前这套教程提供的版本是修订第一版,程序文件通过32位和64位两种OFFICE系统测试。

第六套教程:《VBA信息获取与处理》是一部高级教程,涉及范围更广,实用性更强,面向中高级人员。教程共二十个专题,包括:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪切板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容。程序文件通过32位和64位两种OFFICE系统测试。

上述教程的学习顺序:1→3→2→6→5或者4→3→2→6→5。提供的程序文件更是一座巨大的代码库,供读者使用,如需要可以WeChat: NZ9668

学习VBA是个过程,也需要经历一种枯燥的感觉

"众鸟高飞尽,孤云独去闲。相看两不厌,只有敬亭山"。学习的过程也是修心的过程,修一个平静的心。在代码的世界中,心平静了,心情好了,身体自然而然就好。心静则正,内心里没有那么多邪知邪见,也就没有那么多妄想。利人就是利己。我的教程助力给正在努力的朋友。

"水善利万物而不争",绵绵密密,微则无声,巨则汹涌。学习亦如此,知道什么是自己所需要的,不要蜷缩在一小块自认为天堂的世界里,待到暮年时再去做自欺欺人的言论。要努力提高自己,用一颗充满生机的心灵,把握现在,这才是进取。越是有意义的事情,困难会越多。愿力决定始终,智慧决定成败。不管遇到什么,都是风景。看淡纷争,看轻得失。学习时微而无声,利用时则巨则汹涌。"路漫漫其修远兮,吾将上下而求索"

每一分收获都是成长的记录,怎无凭,正是这种执着,成就了朝霞的灿烂。最后将一阙词送给致力于VBA学习的朋友,让大家感受一下学习过程的枯燥与执着:

浮云掠过,暗语无声,

唯有清风,惊了梦中啼莺。

望星,疏移北斗,

奈将往事雁同行。

阡陌人,昏灯明暗,

忍顾长亭。

多少VBA人,

暗夜中,悄声寻梦,盼却天明。

怎无凭!

分享我多年工作实际经验的成果,随喜这些有用的东西,给确实需要利用VBA的同路人。回向学习利用VBA的历历往事,不胜感慨,谨以这些文字以纪念,

分享成果,随喜正能量

vba monthview控件64位_利用VBA获取文件的信息和属性相关推荐

  1. vba monthview控件64位_VBA学习

    下面是我推出的各套教程介绍(推荐应用:32位office,13版本).第一和第四是初级,第三是中级偏下,第二是中级偏上,第五套六套是高级,第一二三五六是PDF+程序文件,第四套是视频+PDF+程序文件 ...

  2. vba monthview控件64位_VBA对多列指定类型的单元格进行数据排重

    大家好,今日推出常用"积木"过程案例分享第305期,今日内容是利用字典,对多列指定类型单元格数据排重.提供给大家的这些内容是我多年经验的记录,来源于我多年的实践.大家在学习VBA的 ...

  3. igs无法分配驱动器映射表_利用VBA获取驱动器的信息

    大家好,我们今日讲解"VBA信息获取与处理"教程中第十七个专题"文件及文件夹信息的获取及操作"的第三节"利用VBA获取文件的信息和属性",这 ...

  4. Toolbar控件:32位真彩色大图标

    一.创建普通toolbar 1.         新建一MFC程序,在Dlg头文件中添加一个CToolBar类的成员变量CToolBar m_Toolbar; 2.         然后在头文件中定义 ...

  5. asp.net 包含动态创建控件的容器如果要切换显示/隐藏不要用 Visible 属性

    asp.net 包含动态创建控件的容器如果要切换显示/隐藏不要用 Visible 属性 就是不用 XXX.Visible = false;  // true 因为这样该容器及其子控件会彻底的从页面上消 ...

  6. dll文件32位64位检测工具以及Windows文件夹SysWow64的坑

    自从操作系统升级到64位以后,就要不断的需要面对32位.64位的问题.相信有很多人并不是很清楚32位程序与64位程序的区别,以及Program Files (x86),Program Files的区别 ...

  7. C#ListView控件添加复选框并获取选中的数目

    1.添加复选框:listView1.CheckBoxes = true; 2.选中listview并获取选中的数目: private void listView1_ItemChecked(object ...

  8. 64位系统使用Access数据库文件的彻底解决方法

    64位系统使用Access数据库文件的彻底解决方法 最近,有PDF.NET用户问我怎么在64位系统下无法访问Access数据库的问题,我第一反应是我怎么没有遇到呢?今天一看自己的VS和Office都是 ...

  9. 21、控件使用之滚字轮UIC文件的组态和控件设置

    控件使用之滚字轮UIC文件的组态和控件设置 1.准备滚字轮图片 2.创建组态图标字库项目 2.1.查看滚字轮图片的分辨率 2.2.创建工程 2.3.添加图片 2.4.设置控件属性 2.5.设置字体高度 ...

最新文章

  1. Scrum仪式之Sprint计划会议
  2. iOS转让app-您必须移除要转让的 App 的所有构建版本和测试员,并清除“测试信息”下的所有信息字段解决方案...
  3. 趣学python3(41)--利用交集计算词类标签的分类
  4. java c 客户端_java基于C/S模式实现聊天程序(客户端)
  5. greenplum 替代mysql_转:MySQL到Greenplum迁移分析
  6. 华为进军美国受挫:竟被美运营商巨头临时放鸽子
  7. Ubuntu14.04安装mysql
  8. 代码描述10911 - Forming Quiz Teams
  9. python全栈脱产第20天------常用模块---re模块和subprocess模块
  10. canvas基础学习笔记
  11. extmail mysql数据库 重启_linux下安装和配置extmail
  12. Vue 脚手架的搭建
  13. 情感预测SHINE: Signed Heterogeneous Information Network Embedding for Sentiment Link Prediction引介
  14. android 控件阴影
  15. channel的用法
  16. 【原创】快速上手使用思维导图
  17. Servlet | ServletConfig接口、ServletContext接口详解
  18. JavaScript 中的强制类型转换
  19. Dev 与 Ops 互怼 | 科普一下 DevOps
  20. 剑魂之刃服务器维护,剑魂之刃全服合服停机维护预告

热门文章

  1. LinuxProbe 0x15 SAMBA文件共享服务、NFS网络文件系统、AutoFs自动挂载服务、DNS域名解析服务
  2. 终于懂了TCP的三次握手和四次挥手(超精彩分析)
  3. 关于微信小程序wx:for不起作用的原因之一。。
  4. [GIS] 常见地图投影 - 投影坐标系 - UTM|高斯克吕格|兰勃特等角投影|墨卡托投影
  5. android获取电量的方法,android获取当前电量
  6. Linux服务器安装miniconda3
  7. go之生成随机字符串
  8. 初中计算机老师教学计划,初中信息技术教师个人三年成长规划
  9. iNFTnews | 元宇宙如何为性别酷儿人群提供包容空间
  10. vue-cli(vue脚手架)超详细教程