William cần chèn tên tệp trong bảng nằm trong hộp văn bản ở chân trang của tài liệu (yêu cầu của khách hàng để thực hiện theo cách đó).

Anh ấy muốn tên tệp đó tự động cập nhật mỗi khi anh ấy lưu tài liệu hoặc ít nhất là khi anh ấy sử dụng “Save As” để tạo một tệp mới.

William đã chèn một trường FILENAME, nhưng anh ấy vẫn phải nhớ mở footer và nhấp vào đó và nhấn F9 để cập nhật nó. Anh ấy muốn nó tự động làm.

Về mặt lịch sử, Word được phát triển với sự hiểu biết rằng tài liệu của bạn cuối cùng sẽ được in. (Đây là trước những ngày thực hiện hầu hết các tác vụ trực tuyến, bằng điện tử.) Một trong những hiện vật liên quan đến sự hiểu biết lịch sử này là Word không cập nhật các trường cho đến khi bạn đi in. Do đó, các trường không được cập nhật khi bạn thực hiện các tác vụ khác, chẳng hạn như lưu hoặc sử dụng Lưu dưới dạng.

Với sự hiểu biết này trong tâm trí, có một số điều bạn có thể làm. Đầu tiên là đánh lừa Word nghĩ rằng bạn đang in. Tuy nhiên, trước khi thực hiện “thủ thuật” này, bạn cần làm theo các bước sau:

  1. Hiển thị hộp thoại Tùy chọn Word. (Trong Word 2007, nhấp vào nút Office và sau đó nhấp vào Tùy chọn Word. Trong Word 2010 và các phiên bản mới hơn, hiển thị tab Tệp của dải băng và sau đó nhấp vào Tùy chọn.)

  2. Ở bên trái của hộp thoại, nhấp vào Hiển thị. (Xem Hình 1.)

  3. Đảm bảo rằng hộp kiểm Cập nhật Trường Trước khi In được chọn.

  4. Nhấp vào Nâng cao ở phía bên trái của hộp thoại.

  5. Cuộn xuống cho đến khi bạn nhìn thấy phần In. (Xem Hình 2.)

  6. Đảm bảo rằng hộp kiểm Cho phép Trường Chứa các Thay đổi Đã Theo dõi để Cập nhật Trước khi In được chọn.

  7. Nhấp vào OK để lưu các thay đổi của bạn.

Bây giờ, tất cả những gì bạn cần làm khi muốn cập nhật các trường là nhấn Ctrl + P. Thao tác này sẽ hiển thị hộp thoại Print (Word 2007) hoặc các tùy chọn in (phiên bản Word mới hơn). Khi bạn đã đến thời điểm này, các trường trong tài liệu nên được cập nhật vì Word dự đoán rằng bạn sẽ in. Bạn có thể nhấn Esc hoặc bấm vào tab Trang đầu của ruy-băng để bỏ in và bạn nên lưu ý rằng tất cả các trường trong tài liệu của bạn đều được cập nhật.

Bạn cũng có thể sử dụng macro để thực hiện các tác vụ này. Macro sau đây không thay đổi cài đặt trong hộp thoại Tùy chọn Word, nhưng nó thực hiện vừa đủ trình tự in mà nó đánh lừa Word cập nhật các trường.

Sub UpdateAllFields()

With ActiveDocument         .PrintPreview         .ClosePrintPreview     End With End Sub

Có một cách tiếp cận vĩ mô khác mà bạn có thể thực hiện, nếu muốn. Cách tiếp cận này bỏ qua mọi thủ thuật và thay vào đó, bước qua từng “câu chuyện”

trong một tài liệu và cập nhật bất kỳ trường nào được tìm thấy trong những câu chuyện đó. (Một “câu chuyện”

tốt nhất được xem như một lớp trong tài liệu của bạn. Tài liệu chính là một câu chuyện, đầu trang và chân trang khác, đồ họa khác, v.v.) Thực tế có hai macro được sử dụng trong cách tiếp cận này; bạn sẽ chạy macro UpdateAllFields để bắt đầu quá trình cập nhật.

Sub UpdateAllFields()

Dim objStory As Range     Dim objTOC As TableOfContents     Dim objTOA As TableOfAuthorities     Dim objTOF As TableOfFigures     Dim objIndex As Index

Application.ScreenUpdating = False     Application.DisplayAlerts = wdAlertsNone

For Each objStory In ActiveDocument.StoryRanges         UpdateFieldsInStory objStory

While Not (objStory.NextStoryRange Is Nothing)

Set objStory = objStory.NextStoryRange             UpdateFieldsInStory objStory         Wend     Next             For Each objTOC In ActiveDocument.TablesOfContents         objTOC.Update     Next

For Each objTOA In ActiveDocument.TablesOfAuthorities         objTOA.Update     Next

For Each objTOF In ActiveDocument.TablesOfFigures         objTOF.Update     Next

For Each objIndex In ActiveDocument.Indexes         objIndex.Update     Next

Application.DisplayAlerts = wdAlertsAll     Application.ScreenUpdating = True End Sub
Private Sub UpdateFieldsInStory(iobjStory As Range)

Dim objShape As Shape

With iobjStory         .Fields.Update

Select Case .StoryType             Case wdMainTextStory, wdPrimaryHeaderStory, _               wdPrimaryFooterStory, wdEvenPagesHeaderStory, _               wdEvenPagesFooterStory, wdFirstPageHeaderStory, _               wdFirstPageFooterStory

For Each objShape In .ShapeRange                     With objShape.TextFrame                         If .HasText Then .TextRange.Fields.Update                     End With                 Next         End Select     End With End Sub

Nếu bạn muốn tìm hiểu thêm thông tin về việc cập nhật các trường bằng macro, bạn có thể truy cập trang này tại trang của Greg Maxey; đặc biệt chú ý đến phần có tên “Cập nhật các lĩnh vực”:

http://gregmaxey.mvps.org/word_tip_pages/word_fields.html

Như bạn có thể nói, không nhất thiết phải dễ dàng cập nhật tất cả các trường trong một tài liệu. Có vẻ như Microsoft có thể dễ dàng bổ sung khả năng như vậy, nhưng ngay cả khi đã trải qua nhiều năm, Word vẫn thiếu khả năng đó. Nếu bạn muốn thấy Microsoft thêm khả năng này, bạn có thể truy cập diễn đàn UserVoice của họ và bỏ phiếu cho khả năng đó:

https://word.uservoice.com/forums/304924-word-for-windows-desktop-application/suggestions/11685894

_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 (13475) áp dụng cho Microsoft Word 2007, 2010, 2013 và 2016.