Thông thường để Cut hay Copy một đoạn văn, ta phải bôi đen đoạn văn ấy. Với file nhỏ vài trăm ký thì không yêu cầu gì: ta cứ việc nhấn nút trái chuột và kéo rê cho đến khi đạt yêu cầu. Tuy nhiên khi file dung lượng rất lớn từ chục MB trở lên thì việc chọn bôi đen như thế rõ ràng là không khả thi!
Thế nhưng bạn có thấy, dù file lớn đến đâu, nếu ta nhấn nút Select All (Ctrl A) thì toàn bộ file đều được chọn ngay tức khắc! Điều nầy có nghĩa là có cách chọn nhanh.
1- Xác định file word (doc) có bao nhiêu trang?-> Công tác nầy dễ, không cần code. Bạn chỉ việc mở file và ngồi đợi (không thao tác trên file đang mở). Sở dĩ ngồi đợi vì công tác đọc file (Repaginate) dung lượng lớn khá chậm, chúng hoạt động nền (background) nên ta không làm việc gì để nhường cho chúng. (file nhỏ thì tức thời, file 20 MB chừng nửa phút).
Trên thanh Status (dưới cùng), bạn sẽ thấy: Page xxx là trang hiện tại (current), cách đó là tỉ trang hiện tại/Tổng số trang xxx/yyy. yyy là tổng số trang của file.
-> Nhanh hơn, ngay khi bạn mở file doc, vào menu File, xuống Properties, chọn bảng Statistics, đương nhiên cũng ngồi đợi một lát, sẽ hiện lên các thông số của file.
-> Với VBA, bạn có thể chạy1 trong 2 cách sau:
Mã: Chọn hết
Sub TongSoTrang1()
ActiveDocument.Repaginate
MsgBox ActiveDocument.BuiltInDocumentProperties(wdPropertyPages)
End Sub
Mã: Chọn hết
Sub TongSoTrang2()
ActiveDocument.Repaginate
MsgBox ActiveDocument.BuiltInDocumentProperties("Number of Pages")
End Sub
Hai cách trên đề giống nhau: yêu cầu word đọc file sau đó thông báo. Chúng chỉ khác nhau hằng số sử dụng.
2- Chọn điểm giữa fileTa biết số yyy là tổng số trang, nửa file sẽ là yyy/2
vd yyy = 6000, nửa file là 3000
Bạn chạy code sau:
Mã: Chọn hết
Selection.GoTo What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=3000
đương nhiên ta không nên cắt file "máy móc" như thế mà nên chọn đến chổ nào vừa hết chương, có nhiều khoảng trống xuống hàng.
Nghĩa là câu code trên có thể sửa lại số trang ở sau: tới thêm vài trang hay lùi lại vài trang, aaa = (yyy/2) +- bbb
Mã: Chọn hết
Selection.GoTo What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=2978
Xem dấu nháy con trỏ: cũng chưa đến vị trí yêu cầu! vẫn còn cách một số dòng...
ta cho dấu nháy chạy tới tiếp vài dòng:
Mã: Chọn hết
Selection.GoTo What:=wdGoToLine, Which:=wdGoToRelative, Count:=10
nếu lùi lại thì:
Mã: Chọn hết
Selection.GoTo What:=wdGoToLine, Which:=wdGoToPrevious, Count:=8
3- Chọn nửa file:- Chọn nửa file đầu:
Mã: Chọn hết
Selection.HomeKey Unit:=wdStory, Extend:=wdExtend
- Chọn nửa file sau:
Mã: Chọn hết
Selection.EndKey Unit:=wdStory, Extend:=wdExtend
bài viết khá dài, thực ra ta chỉ có vài dòng code (chọn nửa sau):
Selection.GoTo What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=1694
Selection.GoTo What:=wdGoToLine, Which:=wdGoToRelative, Count:=10
Selection.EndKey Unit:=wdStory, Extend:=wdExtend
Trên cơ sở code nầy, bạn có thể cắt đoạn bất kỳ ở hai đầu khá nhanh; nếu cắt đoạn giữa hơi mất công một tí nhưng cũng nhanh.