VBA中怎么读取文件的属性,如修改时间,类型,大小之类的

2022-03-16 科技 703阅读
GetAttr函数返回文件属性的
返回一个Integer,此为一个文件、目录、或文件夹的属性。

语法

GetAttr(pathname)

必要的pathname参数是用来指定一个文件名的字符串表达式。pathname可以包含目录或文件夹、以及驱动器。

返回值

由GetAttr返回的值,是下面这些属性值的总和:

常数值描述
vbNormal0常规
vbReadOnly1只读
vbHidden2隐藏
vbSystem4系统文件
vbDirectory16目录或文件夹
vbArchive32上次备份以后,文件已经改变
vbalias64指定的文件名是别名。

注意这些常数是由VBA指定的,在程序代码中的任何位置,可以使用这些常数来替换真正的值。

说明

若要判断是否设置了某个属性,在GetAttr函数与想要得知的属性值之间使用And运算符与逐位比较。如果所得的结果不为零,则表示设置了这个属性值。例如,在下面的And表达式中,如果档案(Archive)属性没有设置,则返回值为零:

Result=GetAttr(FName)AndvbArchive

如果文件的档案属性已设置,则返回非零的数值。

FileDateTime返回文件修改时间

返回一个Variant(Date),此为一个文件被创建或最后修改后的日期和时间。

语法

FileDateTime(pathname)

必要的pathname参数是用来指定一个文件名的字符串表达式。pathname可以包含目录或文件夹、以及驱动器。

FileLen返回文件长度

返回一个Long,代表一个文件的长度,单位是字节。

语法

FileLen(pathname)

必要的pathname参数是用来指定一个文件名的字符串表达式。pathname可以包含目录或文件夹、以及驱动器。

说明

当调用FileLen函数时,如果所指定的文件已经打开,则返回的值是这个文件在打开前的大小。

注意若要取得一个打开文件的长度大小,使用LOF函数。

Dir$返回文件是否存在
返回一个String,用以表示一个文件名、目录名或文件夹名称,它必须与指定的模式或文件属性、或磁盘卷标相匹配。

语法

Dir[(pathname[,attributes])]

Dir函数的语法具有以下几个部分:

部分描述
pathname可选参数。用来指定文件名的字符串表达式,可能包含目录或文件夹、以及驱动器。如果没有找到pathname,则会返回零长度字符串("")。
attributes可选参数。常数或数值表达式,其总和用来指定文件属性。如果省略,则会返回匹配pathname但不包含属性的文件。

设置值

attributes参数的设置可为:

常数值描述
vbNormal0(缺省)指定没有属性的文件。
vbReadOnly1指定无属性的只读文件
vbHidden2指定无属性的隐藏文件
VbSystem4指定无属性的系统文件
vbVolume8指定卷标文件;如果指定了其它属性,则忽略vbVolume
vbDirectory16指定无属性文件及其路径和文件夹。

注意这些常数是由VBA所指定的,在程序代码中的任何位置,可以使用这些常数来替换真正的数值。

说明

Dir支持多字符(*)和单字符(?)的通配符来指定多重文件。

由于Macintosh不支持通配符,使用文件类型指定文件组。可以使用MacID函数指定文件类型而不用文件名。比如,下列语句返回当前文件夹中第一个TEXT文件的名称:

Dir("SomePath",MacID("TEXT"))

为选中文件夹中所有文件,指定一空串:

Dir("")

在MicrosoftWindows中,如果在Dir函数中使用MacID函数,将产生错误。

任何大于256的attribute值都被认为是MacID函数的值。

在第一次调用Dir函数时,必须指定pathname,否则会产生错误。如果也指定了文件属性,那么就必须包括pathname。

Dir会返回匹配pathname的第一个文件名。若想得到其它匹配pathname的文件名,再一次调用Dir,且不要使用参数。如果已没有合乎条件的文件,则Dir会返回一个零长度字符串("")。一旦返回值为零长度字符串,并要再次调用Dir时,就必须指定pathname,否则会产生错误。不必访问到所有匹配当前pathname的文件名,就可以改变到一个新的pathname上。但是,不能以递归方式来调用Dir函数。以vbDirectory属性来调用Dir不能连续地返回子目录。

提示由于文件名并不会以特别的次序来返回,所以可以将文件名存储在一个数组中,然后再对这个数组排序。
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com