WORD VBA丨获取文件的各种名称

这个专辑主要收录一些常用Word VBA代码

在 Word VBA中,很多地方都需要用到文档的名称,比如在使用 SaveAs2 转换文件格式时,需要设置保存的文件路径,亦或者是文档批量合并时,想声明此文档的文件名。

但Word VBA中的文件名只有三种:

  1. 全路径 FullName:包含所在目录+纯文件名+扩展名
  2. 所在目录 Path:文件所在文件夹
  3. 文件名 Name:只有纯文件名+扩展名的组合

而当我要使用纯文件名时,就比较麻烦,尤其是纯文件名中带有“.”这种情况,就更不好处理。

这里分享两个获取文档各种路径的代码,一个是传入document 类型的数据,一个是传入全路径的字符串形式,方便大家使用:

Public Function getWordFileName(doc As Document, Optional whichName As String = "onlyName") As String
    'C:\FOLDER\file.docx
    Select Case whichName
    Case "完整路径", "FullName"                 'C:\FOLDER\file.docx
        getFileName = doc.FullName
    Case "所在目录", "Path"                     'C:\FOLDER
        getFileName = doc.Path
    Case "文件名", "Name"                       'file.docx
        getFileName = doc.Name
    Case "反斜杠", "Separator", "分隔符"         '\
        getFileName = Word.Application.PathSeparator
    Case "纯文件名", "onlyName"                  'file
        getFileName = Left(doc.Name, InStrRev(doc.Name, ".") - 1)
    Case "扩展名", "extension"                   'docx
        getFileName = Right(doc.Name, Len(doc.Name) - InStrRev(doc.Name, "."))
    End Select

End Function
Public Function getAllFileName(fileName As String, Optional getType As String = "name") As String

    'D:\1\2\3.4.TXT
    Dim posD As Integer, posS As Integer
    posD = InStrRev(fileName, ".")
    posS = InStrRev(fileName, "\")

    Select Case getType
    Case "name", "文件名"
        getName = Mid(fileName, posS + 1, posD - posS - 1)     '3.4
    Case "path", "文件路径"
        getName = Left(fileName, posS)                         'D:\1\2\
    Case "pathNs", "文件路径无分隔符"
        getName = Left(fileName, posS - 1)                     'D:\1\2
    Case "file", "文件全名"
        getName = Mid(fileName, posS + 1)                      '3.4.TXT
    Case "ext", "带点扩展名"
        getName = Mid(fileName, posD)                          '.TXT
    Case "extNd", "扩展名"
        getName = Mid(fileName, posD + 1)                      'TXT
    Case "fullName", "文件全址"
        getName = fileName                                     'D:\1\2\3.4.TXT
    End Select

End Function

而在使用时,也比较容易,只需要定义一个字符串变量,将函数所获得的值赋给变量即可:

Dim doc As String
doc = getAllFileName("C:\User\Document
ew doc.docx","name") 				'返回值 new doc
发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章