7

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

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。如何修改它以仅显示文件名?我是否需要将字符串拆分\并提取最后一部分?

4

6 回答 6

9

FSO 有一套处理这类事情的方法,其中一个是“getBaseName”

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

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

于 2012-07-19T16:43:47.413 回答
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,如果文件从未保存或没有扩展名,则会出错。

于 2012-07-19T16:15:36.387 回答
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
于 2014-01-21T23:02:26.533 回答
0

是的,我不会那样做的!

假设你有一个完整的文件夹,你不需要扩展名,你只需要名字。您要做的是浏览文档一词并通过此函数使用您希望从文件名中删除的扩展名类型来解析它们

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

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

removeExtension = documentWithoutExtension

End Function
于 2015-08-28T10:00:21.063 回答
0

这个对我有用。

Sub ShowFilename()
MsgBox ActiveWindow.Parent
End Sub
于 2017-10-04T23:56:19.123 回答
0

一个简单的方法是:

Sub Test1()
Dim DocName As Document
Set DocName = ActiveDocument
end sub
于 2019-04-26T16:41:47.493 回答