这个专辑主要收录一些常用Word VBA代码
在 Word VBA中,很多地方都需要用到文档的名称,比如在使用 SaveAs2 转换文件格式时,需要设置保存的文件路径,亦或者是文档批量合并时提取文件夹中的文件名,想声明此文档的文件名。
但Word VBA中的文件名只有三种:
全路径 FullName:包含所在目录+纯文件名+扩展名所在目录 Path:文件所在文件夹文件名 Name:只有纯文件名+扩展名的组合
而当我要使用纯文件名时首码项目,就比较麻烦,尤其是纯文件名中带有“.”这种情况,就更不好处理。
这里分享两个获取文档各种路径的代码,一个是传入document 类型的数据,一个是传入全路径的字符串形式提取文件夹中的文件名,方便大家使用:

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

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
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。