2012-07-19 11 views
5

Tôi có mã trích xuất đường dẫn đầy đủ của một tệp, trừ phần mở rộng và tôi đang cố gắng sửa đổi nó để chỉ lưu tên của tệp, một lần nữa mà không có phần mở rộng.Làm cách nào để lấy tên tệp hiện tại của tài liệu Word mà không có phần mở rộng hoặc đường dẫn đầy đủ, sử dụng macro?

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 

này hiển thị C:\Users\test, và tên của tài liệu là test.docm. Làm thế nào tôi có thể sửa đổi điều này để chỉ hiển thị tên tập tin? Tôi có cần phải tách chuỗi dọc theo \ và trích xuất phần cuối cùng không?

Trả lời

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 

Ban đầu tôi đăng bài này mà không có nếu có, sẽ lỗi nếu tệp chưa bao giờ được lưu hoặc không có phần mở rộng.

1

Như tôi đã không thể ghi mã sử dụng FSO (không phải là nó chỉ cho VB, phải không?), tôi đã viết cái này, khá tự giải thích :)

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

Bạn có thể sử dụng FSO với VBA. –

0

Ngươi, tôi sẽ không làm như vậy!

Giả thuyết, bạn có toàn bộ thư mục đáng giá và bạn không cần phần mở rộng, bạn chỉ muốn tên. Những gì bạn sẽ làm là xem qua các tài liệu từ và phân tích chúng thông qua chức năng này với loại tiện ích bạn muốn xóa khỏi tên tệp

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

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

removeExtension = documentWithoutExtension 

End Function 
0

Điều này phù hợp với tôi.

Sub ShowFilename() 
MsgBox ActiveWindow.Parent 
End Sub