如何在vba中用GetShortPathName获取文件的8.3文件名?





所有文件系统的文件命名规则都是”文件的基础名称+.+扩展名”。

比如文件名test.xls、abc.txt等。

在MS-DOS FAT文件系统中,支持一种最多8个字符的文件基础名称+.+3个字符的扩展名的文件名命名规则,简称为8.3文件名。

为了区别8.3文件名,任何长度大于8.3的文件名被称为long file name,对应的8.3文件名称为short file name。

虽然现在的文件系统都已经不再只能容纳这么短的文件名了,但是为了向前兼容,当我们创建了一个长的文件名时,系统会自动的创建一个8.3文件名作为别名。

为了获得一个文件的8.3文件名可以使用API函数GetShortPathName 它的语法如下:

其中参数lpszLongPath指的是要转换的文件名,lpszShortPath参数指的是接受转换后的文件名,cchBuffer为缓冲区的大小(字符数)。

如果参数lpszShortPath设置为null,cchBuffer参数设置为0,则GetShortPathName函数的返回值为这个转换实际需要的的缓冲区大小(字符数)。

根据以上的知识,可以使用如下的代码获取文件的8.3文件名。

 

发表评论