[Help me] Code vba trong word

Liên hệ QC

luongvangioi

Thành viên mới
Tham gia
5/8/08
Bài viết
12
Được thích
1
các bác giúp đã chút code vba cho word bài toán sau: mình đã tạo nút lệnh cứ sau dấu chấm là phải viết hoa, bạn nào giỏi code viết dùm hàm được không?
 
Tôi xài Word 2010 trở về trước thì khi bạn gõ đúng ngữ pháp dấu câu thì nó sẽ tự chỉnh ký tự đầu tiên sau dấu chấm là ký tự Hoa. TUY NHIÊN nếu bạn cố ý hoặc vô ý gõ sai nguyên tắc đặt dấu câu (khoảng trắng với dấu không đúng...) hoặc mâu thuẫn dấu câu với ký tự (chẳng hạn cố ý sửa một ký tự Hoa sau dấu chấm thành ký tự thường) thì ngay sau đó Word sẽ không chỉnh ký tự Hoa theo sau dấu chấm nữa.
Cách phục đơn giản là hãy sửa lại cho chuẩn ngữ pháp dấu từ đoạn bị Word bỏ qua (khúc bắt đầu sai) thì Word sẽ lại chiều ý trở lại. Word sẽ nhận ra cú pháp đặt dấu ở ngay câu liền trước nên nếu bạn cố tình sai có chủ định thì hãy cứ chỉnh lại ở câu tiếp theo thì tính năng chỉnh ký tự theo dấu của Word sẽ hoạt động lại. Nếu hiểu cách làm việc của Word thì nó cũng sẽ hiểu lại bạn.
 
Mặc định trong word là sau dấu chấm sẽ viết hoa.
View attachment 247054
cái này mình biết nhưng mình đang tạo 1 ứng dụng nó có chức năng chuyển thành Hoa sau dấu chấm, nên mình cần code vba
Bài đã được tự động gộp:

cái này mình biết nhưng mình đang tạo 1 ứng dụng nó có chức năng chuyển thành Hoa sau dấu chấm, nên mình cần code vba
 
Thử như sau nhé.
Mở tập tin Word -> Alt + F11 để vào VBE -> menu Insert -> Module -> dán code sau vào Module1 -> chạy sub viethoa
Mã:
Sub viethoa()
    Dim text As String
    Selection.End = 0
    With Selection.Find
        .ClearFormatting
        .Replacement.ClearFormatting
        .text = ".*[a-zA-Z]"
        .MatchWildcards = True
        Do While .Execute
            text = Selection.text
            Selection.text = ". " & UCase(Right(text, 1))
        Loop
    End With
End Sub

Sau dấu chấm có thể có 0, 1 hoặc nhiều dấu cách SPACE
 
Thử như sau nhé.
Mở tập tin Word -> Alt + F11 để vào VBE -> menu Insert -> Module -> dán code sau vào Module1 -> chạy sub viethoa
Mã:
Sub viethoa()
    Dim text As String
    Selection.End = 0
    With Selection.Find
        .ClearFormatting
        .Replacement.ClearFormatting
        .text = ".*[a-zA-Z]"
        .MatchWildcards = True
        Do While .Execute
            text = Selection.text
            Selection.text = ". " & UCase(Right(text, 1))
        Loop
    End With
End Sub

Sau dấu chấm có thể có 0, 1 hoặc nhiều dấu cách SPACE
Cảm ơn bạn rất nhiều.
 
bác cao thủ giúp em luôn cái này với: code vba tối ưu dấu nháy đơn và đôi
em có đoạn word như sau: chim én " loại khác là cén " loài chim
em muốn tối ưu thành: chim én "loại khác là cén" loài chim
em viết code để chạy cho nút lệnh khi nhấn là dấu nháy đôi sát vào chữ l và n, từ én 1 khoảng cách rồi đến nháy đôi, tương tự sau nháy đôi đóng là 1 khoảng cách,
 
Mình biết vì sao bạn này yêu cầu tạo nút lệnh cứ sau dấu chấm là phải viết hoa rồi, hóa ra là do bạn chưa biết viết hoa. "trong các bài viết của bạn không thấy một từ nào viết hoa cả". Mình đoán thế không biết có đúng không.
 
Mình biết vì sao bạn này yêu cầu tạo nút lệnh cứ sau dấu chấm là phải viết hoa rồi, hóa ra là do bạn chưa biết viết hoa. "trong các bài viết của bạn không thấy một từ nào viết hoa cả". Mình đoán thế không biết có đúng không.
hi mình đang làm 1 cái addins cho word nhưng code vba của mình kém quá, bạn thông cảm, mục đích là app dành cho những người vô tình gõ sai chỉ cần nhấn vào là tự động sửa hết
 
hi mình đang làm 1 cái addins cho word nhưng code vba của mình kém quá, bạn thông cảm, mục đích là app dành cho những người vô tình gõ sai chỉ cần nhấn vào là tự động sửa hết
Ý mình nói là người đang giúp thì rất tôn trọng người được giúp thể hiện qua các bài giao tiếp thì đầu câu hoặc sau dấu chấm viết hoa rất đầy đủ, còn người được giúp thì hình như không quan tâm.
 
Mình biết vì sao bạn này yêu cầu tạo nút lệnh cứ sau dấu chấm là phải viết hoa rồi, hóa ra là do bạn chưa biết viết hoa. "trong các bài viết của bạn không thấy một từ nào viết hoa cả". Mình đoán thế không biết có đúng không.
Ai cũng biết viết hoa hết bạn à.
Trường hợp người khác (những người mà thớt làm cái addins giùm) thì do "vô tình gõ sai [sic]" (xem bài #9). Trường hợp thớt thì do phím 'shift' và phím 'caps lock' bị hư.

Tôi tính bảo thớt copy bài mình vào file word rồi "nhấn vào là tự động sửa hết". Xong copy trở lại đây. Nhưng nhìn lại thì thớt đâu có code làm cái "viết hoa đầu dòng". Thế là mệt cho bác ở bài #5 lại phải chỉnh code để bao cái này. :p:p:p
 
Lần chỉnh sửa cuối:
bác cao thủ giúp em luôn cái này với: code vba tối ưu dấu nháy đơn và đôi
em có đoạn word như sau: chim én " loại khác là cén " loài chim
em muốn tối ưu thành: chim én "loại khác là cén" loài chim
em viết code để chạy cho nút lệnh khi nhấn là dấu nháy đôi sát vào chữ l và n, từ én 1 khoảng cách rồi đến nháy đôi, tương tự sau nháy đôi đóng là 1 khoảng cách,
Bạn thử test code sau nhé. Thấy bạn viết là bạn đang làm 1 cái addins cho word mà tôi thấy lo quá. Nếu bạn định kéo dài chủ đề cho tới khi hoàn thành cái addins thì có lẽ tôi sẽ không có đủ kiên nhẫn.
Mã:
Sub bo_dau_cach_trong_nhay_don_kep()
Dim text As String
    Selection.End = 0
    With Selection.Find
        .ClearFormatting
        .Replacement.ClearFormatting
        .MatchWildcards = True
        .text = "(['""])"
        .Replacement.text = " \1 "
        .Execute Replace:=wdReplaceAll
        .text = "(['""])[!'""]@\1"
        Do While .Execute
            text = Selection.text
            Selection.text = Replace(text, Mid(text, 2, Len(text) - 2), Trim(Mid(text, 2, Len(text) - 2)))
        Loop
    End With
End Sub
 
Tôi tính bảo thớt copy bài mình vào file word rồi "nhấn vào là tự động sửa hết". Xong copy trở lại đây.
Em đang chờ xem sau vụ addins viết hoa sau dấu chấm, khoảng trắng cho dấu nháy đôi, không biết có tiếp đến dấu ngoặc đơn, dấu chấm phẩy ... không anh ạ.
 
Bạn thử test code sau nhé. Thấy bạn viết là bạn đang làm 1 cái addins cho word mà tôi thấy lo quá. Nếu bạn định kéo dài chủ đề cho tới khi hoàn thành cái addins thì có lẽ tôi sẽ không có đủ kiên nhẫn.
Mã:
Sub bo_dau_cach_trong_nhay_don_kep()
Dim text As String
    Selection.End = 0
    With Selection.Find
        .ClearFormatting
        .Replacement.ClearFormatting
        .MatchWildcards = True
        .text = "(['""])"
        .Replacement.text = " \1 "
        .Execute Replace:=wdReplaceAll
        .text = "(['""])[!'""]@\1"
        Do While .Execute
            text = Selection.text
            Selection.text = Replace(text, Mid(text, 2, Len(text) - 2), Trim(Mid(text, 2, Len(text) - 2)))
        Loop
    End With
End Sub
Hihi em nghĩ bạn ấy có tinh thần tự ngâm cứu đó anh
 
Em đang chờ xem sau vụ addins viết hoa sau dấu chấm, khoảng trắng cho dấu nháy đôi, không biết có tiếp đến dấu ngoặc đơn, dấu chấm phẩy ... không anh ạ.
Hi mấy cái đó em làm xong rồi, do cái nháy đơn và đôi mở nháy đóng nháy trong word nó giống nhau nên tìm và thay thế không được.
 
Ai cũng biết viết hoa hết bạn à.
Trường hợp người khác (những người mà thớt làm cái addins giùm) thì do "vô tình gõ sai [sic]" (xem bài #9). Trường hợp thớt thì do phím 'shift' và phím 'caps lock' bị hư.

Tôi tính bảo thớt copy bài mình vào file word rồi "nhấn vào là tự động sửa hết". Xong copy trở lại đây. Nhưng nhìn lại thì thớt đâu có code làm cái "viết hoa đầu dòng". Thế là mệt cho bác ở bài #56 lạim phải chỉnh code để bao cái này. :p:p:p
Căng thế bác, vào đây chủ yếu là giúp đỡ nhau bác không giúp được bác cứ mỉa mai nhau vậy. ai giúp được mình rất tôn trọng, còn cứ đi soi từng câu chữ thì thì đừng vào đọc làm gì.
 
_)(#;***&&%cho mình sài ké với dạo này sài word nhiều hơn excel ^^^^
Khi nào hoàn thành mình up lên cho mọi người, vì cái này mình học chạy macro và gán cho nút lệnh, tập tành cho vui,
Bài đã được tự động gộp:

Thay vì trả lời mình thì bạn nên cảm ơn anh batman1 đã giúp bạn ở bài #12 có hơn không nhỉ.
batman1 mình rất tôn trọng tài năng, còn một số người vào là chỉ đi soi câu chữ, chán.
 
Okay thank all, Good lucky!
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom