2012-07-19 18 views
5

Mam kod, który wyodrębnia pełną ścieżkę pliku, bez rozszerzenia, i próbuję go zmodyfikować, aby przechowywać nazwę pliku tylko raz, bez rozszerzenia.Jak uzyskać bieżącą nazwę pliku dokumentu programu Word, bez rozszerzenia lub pełnej ścieżki, używając makra?

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 

Wyświetla C:\Users\test i nazwa dokumentu jest test.docm. Jak mogę to zmienić, aby wyświetlać tylko nazwę pliku? Czy muszę rozdzielić ciąg wzdłuż \ i wyodrębnić ostatnią część?

Odpowiedz

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 

Początkowo opublikowałem to bez "jeśli", co byłoby błędem, gdyby plik nigdy nie został zapisany lub nie miał rozszerzenia.

1

Ponieważ nie był w stanie napisać kod za pomocą FSO (nie jest to tylko dla VB, czy to jest?), napisałem ten, całkiem zrozumiały :)

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

Możesz użyć FSO z VBA. –

0

Yeish, nie zrobiłbym tego w ten sposób!

Hipotetycznie, masz całe foldery warte słowa i nie potrzebujesz rozszerzeń, po prostu chcesz imiona. Co byś zrobił, to przejść przez docs słownych i analizować je za pośrednictwem tej funkcji z rodzajem rozszerzenia, które chcesz usunąć z nazwy pliku

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

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

removeExtension = documentWithoutExtension 

End Function 
0

To jeden pracuje dla mnie.

Sub ShowFilename() 
MsgBox ActiveWindow.Parent 
End Sub 
Powiązane problemy