2012-07-19 49 views
5

我有代碼提取文件的完整路徑,減去擴展名,我試圖修改它只存儲文件的名稱,再次沒有擴展名。如何使用宏獲取不帶擴展名或完整路徑的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
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

一套方法由於我是不使用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 
+0

您可以使用FSO和VBA。 – 2014-01-22 05:03:23

0

Yeish,我不會那樣做!

假設你有一個完整的文件夾,你不需要擴展名,你只需要名稱。你會做什麼是經過Word文檔,並分析它們通過此功能與您希望從文件名

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

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

removeExtension = documentWithoutExtension 

End Function 
0

這一個適用於我去掉了擴展的類型。

Sub ShowFilename() 
MsgBox ActiveWindow.Parent 
End Sub 
相關問題