Liệt kê các Cài đặt trong Mẫu (Microsoft Word)
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: