Andy tự hỏi liệu có cách nào để ‘liệt kê’ các cài đặt trong một mẫu (lề, phông chữ, điểm dừng tab, v.v.) không. Anh ấy đã xem nhiều thông tin về việc đặt lại về mặc định, nhưng không có gì sẽ cho anh ấy biết cài đặt thực sự là gì. Anh ấy lưu ý rằng việc mở một mẫu và xem các mục khác nhau rất khó hiểu và kém toàn diện.

Thật không may, không có cách nào dễ dàng để thực hiện việc này trong Word. Lý do chính là vì không có danh sách đầy đủ những cài đặt nào được lưu trữ trong các mẫu và số lượng tuyệt đối các cài đặt đó có thể khá khó khăn.

Điều tốt nhất bạn có thể làm là tạo một macro sẽ kiểm tra các cài đặt bạn quan tâm và sau đó hiển thị chúng.

Ví dụ, hãy xem xét bộ macro sau:

Sub TemplateSettings()

Dim templatePath As String     Dim fleName As String     Dim str As String     Dim sTemp As String

' Select the template to be opened     templatePath = Application.Templates(1).Path     fleName = GetTemplateName(templatePath)

If fleName = "" Then         MsgBox "No template selected"

Exit Sub     End If

Application.Documents.Open (fleName)



str = ActiveDocument.Name & vbCr & vbCr

sTemp = "Other"

Select Case ActiveDocument.Sections(1).PageSetup.PaperSize         Case wdPaperLetter             sTemp = "Letter"

Case wdPaperLegal             sTemp = "Legal"

Case wdPaperA4             sTemp = "A4"

End Select     str = str & "Paper size: " & sTemp

sTemp = "Landscape"

If ActiveDocument.Sections(1).PageSetup.Orientation = wdOrientPortrait Then         sTemp = "Portrait"

End If     str = str & "  Orientation: " & sTemp & vbCr

str = str & "Margins " & marginsStr & vbCr     str = str & vbCr & "User Defined Tab stops " & UserTabStops & vbCr     str = str & vbCr & "User defined styles " & userStyles

Application.Documents(fleName).Close SaveChanges:=wdDoNotSaveChanges

MsgBox str End Sub
Function GetTemplateName(templatePath As String) As String     Dim dlg As FileDialog     Set dlg = Application.FileDialog( _       FileDialogType:=msoFileDialogFilePicker)

With dlg         .AllowMultiSelect = False         .InitialFileName = templatePath         .Filters.Clear         .Filters.Add "Templates", "*.dot"

.Filters.Add "All files", "."

.FilterIndex = 1         .Show         If .SelectedItems.Count > 0 Then             GetTemplateName = .SelectedItems(1)

Else             GetTemplateName = ""

End If     End With     Set dlg = Nothing End Function
Function userStyles() As String     Dim sty As Style     Dim s As String

s = ""

For Each sty In ActiveDocument.Styles         If Not sty.BuiltIn Then             s = vbCr & sty.NameLocal & "  " & sty.Description         End If     Next sty     userStyles = s End Function
Function UserTabStops() As String     Dim s As String     Dim tbStop As TabStop     Dim alg

alg = Array("Left", "Center", "Right", "Decimal", "Bar", "?", "List")

s = ""

For Each tbStop In ActiveDocument.Paragraphs(1).TabStops         s = s & vbCr & ptConvert(tbStop.Position) & _           " Alignment: " & alg(tbStop.Alignment)

Next tbStop     UserTabStops = s End Function
Function marginsStr() As String     With ActiveDocument         marginsStr = _           "Left: " & ptConvert(.PageSetup.LeftMargin) & _           ", Right: " & ptConvert(.PageSetup.RightMargin) & _           ", Top: " & ptConvert(.PageSetup.TopMargin) & _           ", Bottom: " & ptConvert(.PageSetup.BottomMargin)

End With End Function
Function ptConvert(p As Single) As String     ptConvert = Format(PointsToInches(p), "###.##")

' use the following line if you want dimensions in centimeters     'ptConvert = Format(PointsToCentimeters(p), "###.##")

End Function

Macro chính mà bạn bắt đầu là TemplateSettings. Đến lượt mình, macro này gọi các hàm khác trong danh sách. Nó lấy một số cài đặt phổ biến hơn trong một mẫu (tất nhiên là bạn phải chỉ định mẫu) và sau đó hiển thị các cài đặt đó trong một hộp thông báo.

Cụ thể, nó hiển thị tên của mẫu, khổ giấy, hướng trang, lề, điểm dừng tab (chỉ dành cho đoạn đầu tiên trong mẫu) và kiểu do người dùng xác định.

Rõ ràng là có rất nhiều cài đặt khác có thể được trích xuất và hiển thị. Ví dụ: bạn có thể muốn biết đặc điểm của mỗi kiểu là gì, thay vì chỉ là một danh sách các tên kiểu do người dùng xác định. Hoặc bạn có thể muốn biết định dạng cho các kiểu dựng sẵn khác với định dạng mặc định như thế nào. Chỉ những tùy chọn này thôi cũng sẽ tạo ra một lượng lớn sự phức tạp cho macro.

(Hãy xem xét rằng mỗi kiểu có thể có hàng chục cài đặt định dạng khác nhau và “định dạng mặc định” cho các kiểu dựng sẵn được xác định bởi những gì được lưu trữ trong mẫu Thường.) Để bao gồm các bổ sung như vậy, bạn chỉ cần sửa đổi macro để biên dịch thông tin mong muốn.

Cũng xin lưu ý rằng bộ macro được trình bày ở đây được thiết kế đơn giản, mặc dù độ dài của nó. Tất cả những gì nó làm là đặt tất cả các cài đặt đã trích xuất thành một chuỗi và sau đó hiển thị chuỗi đó trong một hộp thông báo. Nếu mẫu bạn đang xem có nhiều, nhiều kiểu do người dùng xác định, thì có thể chuỗi sẽ khá dài. Nếu nó dài hơn 1,024 ký tự, thì bạn sẽ gặp lỗi vì hàm MsgBox chỉ có thể hiển thị một chuỗi có độ dài tối đa đó. Nếu bạn dự đoán rằng chuỗi của mình sẽ dài hơn, bạn sẽ muốn hiển thị nó thành “khối” trong nhiều hộp thông báo hoặc chỉ cần ghi chuỗi ra một tệp văn bản mà bạn có thể kiểm tra sau này.

_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 (10117) áp dụng cho Microsoft Word 97, 2000, 2002 và 2003. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện ribbon của Word (Word 2007 và sau này) tại đây: