我有代码提取文件的完整路径,减去扩展名,我试图修改它只存储文件的名称,再次没有扩展名。
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
。如何将其修改为仅显示文件名?我是否需要沿\
拆分字符串并提取最后一部分?
答案 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