Kiến thức cần có khi soạn thảo văn bản.
Một văn bản 'chuẩn mực' như MS Word quy định mới có thể chạy các macro 'trơn tru' được.
1- Space: Trong toàn văn bản, không cho phép có 2 space liền nhau.
Macro xóa các khoảng trống thừa:
Private Sub XóaKhoangTrông()
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = " " '(2 space)
.Replacement.Text = " " '(1 space)
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Forward = True
.Wrap = wdFindContinue
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
2- Dấu phẩy: buộc dính sát với ký tự cuối đoạn văn (phrase), kế tiếp là một space. Ký tự tiếp theo là ký tự thường.
2a) Macro chỉnh sửa dấu phẩy dạng abc , def
Dùng code như Sub XóaKhoangTrông.
Thay thế các đối số .Text và .Replacement.Text
Text = " ," '(space và phẩy)
.Replacement.Text = "," '(phẩy)
2b) Macro chỉnh sửa dấu phẩy dạng abc,def
Thay thế các đối số:
.Text = "," '(phẩy)
.Replacement.Text = ", " '(phẩy và space)
3- Dấu chấm: buộc dính sát với ký tự cuối câu (sentence, paragraph). Kết thúc câu (sentence) với 1 space, kết thúc đoạn văn (paragraph) là xuống dòng. Ký tự nối tiếp bao giờ cũng là ký tự HOA.
Macro chỉnh sửa dấu chấm không xuống dòng tương tự macro dấu phẩy, ta thay dấu phẩy thành dấu chấm.
4- Dấu ngoặc đơn: gồm đơn mở và đơn đóng.
- Đơn mở bao giờ cũng dính sát với ký tự đầu tiên.
- Đơn đóng bao giờ cũng dính sát với ký tự cuối cùng.
ví dụ: abc (def).
Các dấu đóng mở khác quy định tương tự dấu ngoặc đơn;
vd: abc "def";
abc [def];
abc 'def'
và abc {def}
4a) Macro sửa đơn mở: đơn giản.
.Text = "( "
.Replacement.Text = "("
4b) Đơn đóng: tương tự.
.Text = " )"
.Replacement.Text = ")"
5- Dấu hỏi: buộc dính sát với ký tự cuối câu. Dấu hỏi giá trị ngắt câu tương đương dấu chấm, vì thế sau dấu hỏi không thêm dấu chấm.
vd: abc? Def
ví dụ trên, dấu hỏi dính liền ký tự c, và ký tự D buộc viết HOA vì xem đã ngắt câu. Không có dấu chấm kèm.
Macro sửa cũng tương tự:
.Text = " ?"
.Replacement.Text = "?"
*** Vì dấu hỏi ? là ký tự đặc biệt nên khi chạy macro, có thể một số trường hợp kết quả không như ý. Trường hợp nầy ta phải khai báo:
.Text = " \?"
.Replacement.Text = "\?"
.MatchWildcards = True
.MatchWildcards = True nghĩa là có ký tự đặt biệt, .Text = " \?" nghĩa là trở về dấu ? bình thường
6- Dấu than: buộc dính sát với ký tự cuối câu. Dấu than giá trị ngắt câu tương đương dấu chấm, vì thế sau dấu than không thêm dấu chấm.
vd: abc! Def
ví dụ trên, dấu than dính liền ký tự c, và ký tự D buộc viết HOA vì xem đã ngắt câu. Không có dấu chấm kèm.
Macro sửa cũng tương tự:
.Text = " !"
.Replacement.Text = "!"
*** Vì dấu hỏi ! là ký tự đặc biệt, có thể điều chỉnh code như dấu hỏi.
7- Dấu hai chấm: buộc dính sát với ký tự cuối từ.
vd: abc: def
macro sửa cũng tương tự:
.Text = " :"
.Replacement.Text = ":"
8- Dấu ba chấm: buộc dính sát với ký tự cuối từ, không quy định số lượng dấu chấm, nhưng thường chỉ 3 chấm là đủ:
vd: abc... def
* Ký tự đầu dòng buộc phải viết hoa, trừ trường hợp đặc biệt.
* Ký tự đầu dòng viết ở đầu dòng, hoặc thụt vào 1 space, hoặc thụt vào 1 tab theo trình bày của mỗi người.
Nếu xuống dòng không viết gì (dòng trống) mà có thụt vào (space hay tab) là không đúng quy định.
Xóa nhiều xuống dòng với bảng Find and Replace:
Find: ^p^p
Replace: ^p
Macro:
.Text = Chr(10) & Chr(13) & Chr(10) & Chr(13)
.Replacement.Text = Chr(10) & Chr(13)
bảng Find and Replace:
Find: ^p
Replace: ^p
(ở Find, sau ^p có một space)
Macro:
.Text = Chr(13) & " "
.Replacement.Text = Chr(13)
bạn ơi bạn giúp m 1 chút về macro trong VBA word dc ko có j bạn nt qua mail của m dnthang1993@gmail.com tks bạn nhiều
Trả lờiXóaNếu bạn Thắng Đỗ Nam có vấn đề khác về VBA/Word, bạn có thể vào Box VBA của CLBVB; tôi cũng sinh hoạt ở đấy.
Xóahttp://caulacbovb.com/forum/viewtopic.php?f=15&p=144986#p144986
Xin ad cho hỏi: muốn xóa thụt đầu dòng bằng phím space thì làm sao. Thành đã tìm trên CLBVB mà không thấy. rất mong được giúp đỡ. Chân thành cám ơn!
Trả lờiXóaCuối bài viết trên có vấn đề của bạn
Xóacháu chào bác, có có thể cho cháu hỏi làm thế nào để chạy được chương trình Sổ tay VBA Word - download được không ạ, cháu có tải về nhưng không làm sao chạy được ạ :((
Trả lờiXóaCháu cảm ơn nhiều a
Thưa chú cháu có 1 file excel hỗ trợ copy bảng số liệu sang word nhưng đang gặp vấn đề là: Đối với số liệu dữ liệu number khi copy sang word sẽ hiện thêm các khoảng trắng, cháu muốn dùng VBA để xóa các đối tượng này, nhưng tham khảo 1 số nơi mà chưa tìm được, cháu mới nghiên cứu VBA nên không rành lắm, nhờ chú hỗ trợ code với
Trả lờiXóahttps://drive.google.com/file/d/1zde2bV ... sp=sharing
https://drive.google.com/file/d/1zde2bVa4QoiOD7dhwmTu3qVKzbC_M8n8/view?usp=sharing
Trả lờiXóa