Mary đang viết một macro sẽ chia một bảng. Làm việc trên bảng đang hoạt động không có nhiều vấn đề, nhưng cô ấy muốn sao chép hàng đầu tiên của bảng hiện hoạt, sau đó tách bảng và cuối cùng dán hàng đã sao chép vào hàng đầu tiên của bảng mới được tạo bởi quá trình tách. Để làm điều này đúng cách, cô ấy muốn xác định số chỉ mục được Word sử dụng để tham chiếu hai bảng trong bộ sưu tập Bảng. Mary muốn biết làm thế nào cô ấy có thể khám phá số chỉ mục cho bảng đang hoạt động (trước khi tách) để cô ấy có thể chỉ cần tăng số đó để biết số chỉ mục mới cho bảng được tạo sau khi tách.

Mô hình đối tượng của Word dựa vào việc tổ chức các đối tượng riêng lẻ thành các tập hợp có thể được truy cập theo chương trình. Điều này không chỉ áp dụng cho các bảng mà còn cho các đoạn văn, đồ họa và một loạt các đối tượng khác.

Bạn có thể dễ dàng tìm thấy số lượng đối tượng trong một tập hợp bằng thuộc tính Count. Ví dụ: bạn có thể sử dụng phần sau để biết có bao nhiêu bảng trong một tài liệu, vì nó trả về số đối tượng trong bộ sưu tập Bảng:

iNumTables = ActiveDocument.Tables.Count

Tìm bảng nào là bảng hiện tại hơi phức tạp hơn một chút, nhưng nó có thể được thực hiện. Cách đơn giản nhất là thêm dấu trang vào bảng hiện tại, sau đó kiểm tra tất cả các bảng trong tài liệu để xem bảng nào chứa dấu trang đó. Khi bạn tìm ra điều đó, bạn biết bảng nào là bảng hiện tại và bạn có thể xóa dấu trang. Macro sau thực hiện các bước sau:

Sub FindTableNumber()

Dim J As Integer     Dim iTableNum As Integer     Dim oTbl As Table

Selection.Bookmarks.Add ("TempBM")

For J = 1 To ActiveDocument.Tables.Count         Set oTbl = ActiveDocument.Tables(J)

oTbl.Select         If Selection.Bookmarks.Exists("TempBM") Then             iTableNum = J             Exit For         End If     Next J     ActiveDocument.Bookmarks("TempBM").Select     ActiveDocument.Bookmarks("TempBM").Delete     MsgBox "The current table is table " & iTableNum End Sub

Để sử dụng macro, chỉ cần đảm bảo rằng điểm chèn nằm trong bảng mong muốn. Macro có thể dễ dàng điều chỉnh cho phù hợp với bối cảnh lớn hơn, chẳng hạn như một ngữ cảnh nơi bảng được tách và được thao tác theo cách khác.

Tuy nhiên, có một cách khác để xử lý theo chương trình hành động cơ bản mà Mary muốn đạt được — một phương pháp không yêu cầu sử dụng số chỉ mục cho bộ sưu tập Bảng. Bạn có thể sao chép hàng đầu tiên của bảng và sau đó tách bảng bằng lệnh tương tự như sau:

Selection.Tables(1).Split(5)

Lệnh này chia bảng ở hàng 5; bạn có thể dễ dàng thay đổi điểm phân tách bằng cách thay đổi hàng mà nó được phân tách. Sau đó, bạn có thể di chuyển điểm chèn đến đầu bảng tiếp theo (bảng mới được tạo) bằng cách sử dụng lệnh sau:

Selection.GoTo What:=wdGoToTable, Which:=wdGoToNext

Lệnh này sẽ chuyển đến đầu bảng tiếp theo và sau đó bạn có thể dán hàng tiêu đề mà bạn đã sao chép trước đó.

Nếu bạn quan tâm đến một cuộc thảo luận chi tiết hơn về cách lập trình xử lý bảng, bạn có thể tìm thấy một bài viết xuất sắc tại đây:

http://msdn2.microsoft.com/en-us/library/aa537149(office.11).aspx

_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 (505) á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: