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

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

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

我国每68名孩子中约有1名患自闭症_提取文件夹中的文件名_文件拉杆夹

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

提取文件夹中的文件名_我国每68名孩子中约有1名患自闭症_文件拉杆夹

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

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

文件拉杆夹_我国每68名孩子中约有1名患自闭症_提取文件夹中的文件名

Public Function getWordFileName(doc As Document, Optional whichName As String = "onlyName") As String
    'C:FOLDERfile.docx
    Select Case whichName
    Case "完整路径", "FullName"                 'C:FOLDERfile.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

我国每68名孩子中约有1名患自闭症_提取文件夹中的文件名_文件拉杆夹

Public Function getAllFileName(fileName As String, Optional getType As String = "name") As String
    'D:123.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:12
    Case "pathNs", "文件路径无分隔符"
        getName = Left(fileName, posS - 1)                     'D:12
    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:123.4.TXT
    End Select
End Function

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

Dim doc As String
doc = getAllFileName("C:UserDocumentnew doc.docx","name") 				'返回值 new doc

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注