如何使用宏获取Word文档的当前文件名(没有扩展名或完整路径)?

时间:2012-07-19 16:05:40

标签: vba ms-word

我有代码提取文件的完整路径,减去扩展名,我试图修改它只存储文件的名称,再次没有扩展名。

Sub ShowFilename()

Dim pathName As String
With ActiveDocument
If Len(.Path) = 0 Then
.Save
End If
If Right(.Name, 1) = "x" Then
pathName = Left$(.FullName, (Len(.FullName) - 5))
Else
pathName = Left$(.FullName, (Len(.FullName) - 4))
End If
End With
MsgBox pathName

End Sub

这会显示C:\Users\test,文档名称为test.docm。如何将其修改为仅显示文件名?我是否需要沿\拆分字符串并提取最后一部分?

6 个答案:

答案 0 :(得分:6)

Sub ShowFilename()
Dim pathName As String
Dim o As Document
Set o = ActiveDocument
If InStrRev(o.Name, ".") <> 0 Then
    MsgBox Left(o.Name, InStrRev(o.Name, ".") - 1)
Else
    MsgBox o.Name
End If
End Sub

我最初在没有if的情况下发布了这个,如果文件从未保存过,或者没有扩展名,则会出错。

答案 1 :(得分:6)

FSO为这类事物提供了一套方法,其中一种方法是&#34; getBaseName&#34;

Msgbox CreateObject("scripting.filesystemobject").getbasename(o.Name)

http://msdn.microsoft.com/en-us/library/xhxzwwe1(v=vs.84).aspx

答案 2 :(得分:1)

由于我无法使用FSO编写代码(不仅仅是用于VB,不是吗?),我写了这个,非常自我解释:)

Dim oldFilename As String

oldFilename = ActiveDocument.Name
If Right(oldFilename, 5) = ".docx" Then
    MsgBox ("subtract .docx")
    oldFilename = Left(oldFilename, Len(oldFilename) - 5)
ElseIf Right(oldFilename, 4) = ".doc" Then
    MsgBox ("subtract .doc")
    oldFilename = Left(oldFilename, Len(oldFilename) - 4)
Else
    MsgBox ("no extension yet")
End If

答案 3 :(得分:0)

Yeish,我不会那样做!

假设您有一个完整的文件夹,而且您不需要扩展名,您只需要名称。你要做的就是浏览docs这个单词并通过这个函数解析它们,你想要从文件名中删除扩展名类型

Function removeExtension(myDoc as Document, extension as String)
Dim documentWithoutExtension as String

documentWithoutExtension = replace(myDoc.Name, extension, "")

removeExtension = documentWithoutExtension

End Function

答案 4 :(得分:0)

这个对我有用。

Sub ShowFilename()
MsgBox ActiveWindow.Parent
End Sub

答案 5 :(得分:0)

一种简单的方法是:

Sub Test1()
Dim DocName As Document
Set DocName = ActiveDocument
end sub