Trường FILENAME cho phép bạn chèn tên của tệp tài liệu vào chính tài liệu đó. Nếu bạn sử dụng chuyển đổi / p với trường này, bạn không chỉ nhận được tên tệp mà còn nhận được đường dẫn đầy đủ cho tệp:

{ FILENAME /p }

Như bạn có thể tưởng tượng, tên đường dẫn có thể khá dài, tùy thuộc vào cách ổ cứng của bạn được tổ chức và nơi bạn lưu trữ tài liệu. Vì lý do này, bạn có thể muốn chọn các mức của đường dẫn có trong những gì FILENAME trả về. Ví dụ: sau đây có thể là tên đường dẫn đầy đủ của tài liệu:

C:\My Documents and Settings\Level1\Level2\Level3\Level4\Doc1.docx

Bạn có thể muốn giới hạn các cấp độ thư mục được hiển thị, như thể hiện trong hai ví dụ sau:

\Level2\Level3\Level4\Doc1.docx \Level1\Level2\Level3\Level4\Doc1.docx

Thật không may, không có cách nào để thực hiện việc này với chính trường FILENAME; nó chỉ không bao gồm khả năng đó. Giải pháp duy nhất là tạo macro xác định tên đường dẫn và chèn các mức mong muốn vào tài liệu. Ví dụ: macro sau sẽ chèn, tại điểm chèn, số cấp thư mục mong muốn cho tệp hiện tại:

Sub SelectPaths()

Dim sPath As String     Dim sName As String     Dim sFull As String     Dim sPart As String     Dim sMsg As String     Dim sTemp As String     Dim iLevels As Integer     Dim J As Integer

sPath = ActiveDocument.Path     If sPath = "" Then         MsgBox "Need to save before running this macro.", _           vbOKOnly, "This Document Not Saved"

Else         sPath = sPath & Application.PathSeparator         sName = ActiveDocument.Name         sFull = sPath & sName

sMsg = "This is the full path:" & vbCrLf         sMsg = sMsg & sFull & vbCrLf & vbCrLf         sMsg = sMsg & "How many levels do you want, counting "

sMsg = sMsg & "from right to left?"



sTemp = InputBox(sMsg)

iLevels = Val(sTemp)



sPart = ""

If iLevels > 0 Then             For J = Len(sFull) To 1 Step -1                 If Mid(sFull, J, 1) = Application.PathSeparator Then                     iLevels = iLevels - 1                     If iLevels = 0 Then                         sPart = Mid(sFull, J, 255)

Exit For                     End If                 End If             Next J         End If

Selection.TypeText (sPart)

End If End Sub

Nếu tài liệu chưa được lưu, macro sẽ không chạy. Nó hoạt động về cơ bản bằng cách đếm số lượng dấu phân cách đường dẫn (dấu gạch chéo), bắt đầu từ cuối đường dẫn. Sau đó, nó chỉ chèn một phần của đường dẫn từ điểm đó trở đi.

Tất nhiên, hạn chế đối với một macro như thế này là nó không động như các trường. Nó chỉ cần chèn văn bản. Nếu sau đó bạn thay đổi vị trí của tài liệu hoặc nếu bạn thay đổi tên tài liệu, thì bạn cần chạy lại macro để chèn văn bản đường dẫn mới.

Nếu lý do của bạn đằng sau việc chỉ chèn một phần của đường dẫn là đường dẫn quá dài khi được bao gồm toàn bộ, thì có một cách tiếp cận khác mà bạn có thể thực hiện. Tại sao không chỉ đơn giản là giảm kích thước điểm của phần đường dẫn không quan trọng. Ví dụ: giả sử bạn sử dụng trường FILENAME để chèn đường dẫn và nó xuất hiện như sau:

C:\My Documents and Settings\Level1\Level2\Level3\Level4\Doc1.docx

Nếu bạn muốn ẩn phần ở bên trái của “Level2”, chỉ cần chọn văn bản đó trong kết quả trường và định dạng nó dưới dạng kích thước điểm rất nhỏ. Nếu bạn đặt kích thước điểm giống như 6 hoặc 7 điểm, thì phần không được nhấn mạnh vẫn dễ đọc, nhưng đường dẫn đầy đủ không chiếm nhiều không gian tuyến tính trong tài liệu của bạn. Nếu bạn muốn phần không được nhấn mạnh về cơ bản biến mất, bạn có thể đặt kích thước điểm thành 1 điểm.

_Lưu ý: _

Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên các trang WordTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.

WordTips là nguồn của bạn để đào tạo Microsoft Word hiệu quả về chi phí.

(Microsoft Word là phần mềm xử lý văn bản phổ biến nhất trên thế giới.) Mẹo này (13292) áp dụng cho Microsoft Word 2007, 2010, 2013, 2016, 2019 và Word trong Office 365. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện menu cũ hơn của Word tại đây: