Nhập tệp văn bản và chèn sau dấu trang (Microsoft Word)
James có một chương trình, bên ngoài Word, tự động tạo một tệp văn bản nhỏ thường xuyên. (Tệp văn bản luôn có cùng tên.) James nghĩ sẽ rất tuyệt nếu có một macro có thể nhập tệp văn bản vào tài liệu Word và chèn nó ngay sau dấu trang mà anh ta đã xác định trong tài liệu.
Có một số cách bạn có thể tiếp cận vấn đề này. Nếu mục tiêu chỉ là bao gồm bất kỳ nội dung hiện tại của tệp văn bản là gì, thì bạn sẽ không cần macro — chỉ cần sử dụng trường INCLUDETEXT để tham chiếu đến tệp bạn muốn đưa vào. Mỗi khi bạn cập nhật các trường trong tài liệu của mình, Word sẽ đi ra ngoài và lấy nội dung hiện tại của tệp văn bản và đưa nó vào tài liệu của bạn.
Tuy nhiên, nếu bạn muốn liên tục thêm nội dung hiện tại của tệp văn bản vào tài liệu của mình, thì bạn sẽ cần sử dụng macro. Một cách tiếp cận đơn giản là sử dụng trường INCLUDETEXT trong chính macro, theo cách này:
Sub InsertTextFileAfterBookmark1() With Selection .GoTo what:=wdGoToBookmark, Name:="mybmk" .Fields.Add Range:=Selection.Range, _ Type:=wdFieldIncludeText, Text:="c:\\myfile.txt \c" _ & Chr(32) & "plaintext" & Chr(32) & ""
Macro chuyển đến vị trí của dấu trang, chèn trường INCLUDETEXT, chọn trường, sau đó hủy liên kết trường đó. Kết quả là nội dung của tệp văn bản được chèn vào tài liệu. Mục đích của việc hủy liên kết trường về cơ bản là loại bỏ trường INCLUDETEXT, thay thế nó bằng các kết quả của trường đó (nội dung tệp).
Để sử dụng macro, chỉ cần thay đổi mã để phản ánh tên của dấu trang và đường dẫn đầy đủ đến tệp văn bản bạn muốn chèn. Ngoài ra, hãy đảm bảo rằng bạn sử dụng dấu gạch chéo ngược kép trong đặc tả đường dẫn; điều này là bắt buộc để mã trường hoạt động bình thường.
Một cách tiếp cận khác là bỏ qua hoàn toàn trường INCLUDETEXT và chỉ cần chèn nội dung của tệp. Phiên bản sau của macro thực hiện điều đó:
Sub InsertTextFileAfterBookmark2() If ActiveDocument.Bookmarks.Exists("mybmk") = True Then ActiveDocument.Bookmarks("mybmk").Select Selection.InsertFile FileName:="c:\myfile.txt" Else MsgBox "Bookmark ""mybmk"" does not exist!" End If End Sub
Macro kiểm tra sự tồn tại của dấu trang có tên mybmk (bạn có thể và nên thay đổi điều này) và sau đó sử dụng phương thức InsertFile để chèn nội dung của tệp. Bạn nên nhận ra rằng, như đã viết, macro sẽ ghi đè dấu trang. Nếu bạn muốn đảm bảo rằng dấu trang vẫn còn nguyên vẹn, thì bạn sẽ cần thêm một dòng mã để thu gọn dấu trang về điểm cuối của nó, ngay trước khi chèn tệp:
Selection.Collapse Direction:=wdCollapseEnd
Tất nhiên, macro của bạn có thể lạ mắt như bạn muốn. Ví dụ sau cho thấy một macro đầy đủ tính năng hơn cung cấp cho bạn tùy chọn chỉ định bao nhiêu không gian để đặt giữa dấu trang và nội dung tệp bạn muốn chèn. Tất cả những gì bạn cần làm là đảm bảo rằng bạn điều chỉnh macro tại các điểm (1), (2) và (3) để phản ánh cách bạn muốn nó hoạt động. (Các bình luận trong macro giải thích các kỳ vọng và tùy chọn là gì.)
Sub InsertTextFileAfterBookmark3() ' This macro reads the contents of a specified text file ' and inserts the text after a particular bookmark in ' the active document. Dim InsertSpacer As Integer Dim FileContent As String ' (1) Pick a number to insert something between the ' bookmark and the inserted text as spacing: ' 0 = No space. Text is inserted immediately ' after the bookmark ' 1 = Insert one space between bookmark and text ' 2 = Insert paragraph mark between bookmark and text ' 3 = Insert 2 paragraph marks between bookmark ' and text InsertSpacer = 1 ' (2) Set a constant for the name of the file to import. ' Change the file name inside the quotes below to ' the full path and file name of the text file to ' import: Const TextFile As String = "c:\myfile.txt" ' (3) Change the file name in the quotes below to the ' name of the bookmark after which you want to ' insert the text: Const BookmarkName As String = "mybmk" ' Handle errors On Error GoTo Oops ' Open and grab contents of the file Open TextFile For Input As #1 FileContent = Input(LOF(1), #1) Close #1 ' Find the bookmark in the active document Selection.GoTo What:=wdGoToBookmark, Name:="MyBookmark" ' Move the cursor to the end of the bookmark Selection.MoveRight Unit:=wdCharacter, Count:=1 Select Case InsertSpacer Case 0 ' Do nothing. Text inserted immediately Case 1 ' Insert a space Selection.TypeText Text:=" " Case 2 'Insert a paragraph mark Selection.TypeText Text:=vbCrLf Case 3 'Insert two paragraph marks Selection.TypeText Text:=vbCrLf & vbCrLf End Select ' Insert the text file: Selection.TypeText Text:=FileContent Exit Sub Oops: Select Case Err.Number Case 55 ' File already open ' Close the file Close #1 ' Try again Resume Case 53 ' File not found NotFound = "Could not find the file named: " _ & Chr(34) & TextFile & Chr(34) & vbCrLf _ & vbCrLf & "Verify the file name and path " _ & "in the macro code after " _ & Chr(34) & "Const TextFile As String =" & Chr(34) MsgBox NotFound, vbOKOnly Case Else MsgBox "Error number: " & Err.Number & ", " _ & Err.Description, vbOKOnly End Select End Sub
_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 (5908) á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: