Nhờ cao thủ giúp cách viết VBA tìm và thay thế trong (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

ngoclam1088

Thành viên mới
Tham gia
24/3/08
Bài viết
19
Được thích
2
Xin nhờ cao thủ giúp em vấn đề này với.
Trong word 2013 em có đoạn văn bản như sau:
<bR>
Chào các bạn
<bR>
Hôm nay trời đẹp
<bR>
Kết thúc

Em muốn viết đoạn code để tự động tìm và thay thế chữ "<bR>" theo quy tắc
Câu 1
Chào các bạn
Câu 2
Hôm nay trời đẹp
Câu 3
Kết thúc

Tức là vừa tìm chữ <bR> vừa đếm xem nó là chữ xuất hiện lần thứ i và thay bằng chữ "Câu i".
Em cần gấp lắm mong được sự cứu giúp của anh em trong diễn đàn lắm ạ.
Em xin chân thành cảm ơn.
 
Mã:
Sub tim_thay()
Dim rng As Range
Dim i, k As Long

Set rng = Application.InputBox(prompt:="Sample", Type:=8)

For i = 1 To rng.Rows.Count
    If rng.Cells(i, 1) = "<bR>" Then
        k = k + 1
        rng.Cells(i, 1).Value = "C" & ChrW(226) & "u " & k
    End If
        
Next
End Sub
 
Upvote 0
Dạ. Em cần tìm và thay thế trong word 2013 ạ. Nhờ mọi người giúp với. Mất ăn ngủ mấy ngày rồi ạ
 
Upvote 0
Xin nhờ cao thủ giúp em vấn đề này với.
Trong word 2013 em có đoạn văn bản như sau:
<bR>
Chào các bạn
<bR>
Hôm nay trời đẹp
<bR>
Kết thúc

Em muốn viết đoạn code để tự động tìm và thay thế chữ "<bR>" theo quy tắc
Câu 1
Chào các bạn
Câu 2
Hôm nay trời đẹp
Câu 3
Kết thúc

Tức là vừa tìm chữ <bR> vừa đếm xem nó là chữ xuất hiện lần thứ i và thay bằng chữ "Câu i".
Em cần gấp lắm mong được sự cứu giúp của anh em trong diễn đàn lắm ạ.
Em xin chân thành cảm ơn.
Bạn sử dụng code này thử xem.
Mã:
Public Sub GPE()
Dim mySelect As Range, myrange As Range, para
Dim MyDoc As Word.Document, j As Long
On Error GoTo Err
    Set MyDoc = ActiveDocument
    MyDoc.Select
    Set mySelect = Selection.Range
    Application.ScreenUpdating = False
    j = 1
    For Each para In mySelect.Paragraphs
        Set myrange = para.Range
        If Left(myrange.text, Len(myrange.text) - 1) = "<bR>" Then
            myrange.Duplicate.text = "Câu " & j & Chr(13)
            j = j + 1
        End If
    Next para
Err:
    Application.ScreenUpdating = True
End Sub
 
Upvote 0
dùng bộ thu, mò một hồi được code
Mã:
Sub GPE()
Dim i, k, Last As Long
Selection.WholeStory
Last = Selection.Sentences.Count
For i = 1 To Last
    ActiveDocument.Sentences(i).Select
    If Left(Selection.Text, 4) = "<bR>" Then
       k = k + 1
       Selection.TypeText Text:="Câu " & k
    End If
Next
Selection.HomeKey Unit:=wdStory
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn ơi mình đã test trên word 2013 của mình mà vẫn thấy nó chạy không được ạ. Bạn dùng bản word mấy vậy ạ
dùng bộ thu, mò một hồi được code
Mã:
Sub GPE()
Dim i, k, Last As Long
Selection.WholeStory
Last = Selection.Sentences.Count
For i = 1 To Last
    ActiveDocument.Sentences(i).Select
    If Left(Selection.Text, 4) = "<bR>" Then
       k = k + 1
       Selection.TypeText Text:="Câu " & k
    End If
Next
Selection.HomeKey Unit:=wdStory
End Sub
 
Upvote 0
Các bạn lưu ý là chữ <bR> nó nằm một mình một dòng không lẫn lộn với các chữ cái khác nhé.
nên mình nghĩ thuật toán sẽ không phức tạp lắm đâu ạ.
 
Upvote 0
Mình đã dùng và thấy nó quét vẫn còn thiếu một vài chỗ.
Bạn lưu ý là chữ <bR> nó nằm một mình một dòng nhé. Nên thuật toán chắc nhẹ hơn. Nhờ bạn giúp mình với nhé. Chúng ta sắp tới đích rồi.
Bạn sử dụng code này thử xem.
Mã:
Public Sub GPE()
Dim mySelect As Range, myrange As Range, para
Dim MyDoc As Word.Document, j As Long
On Error GoTo Err
    Set MyDoc = ActiveDocument
    MyDoc.Select
    Set mySelect = Selection.Range
    Application.ScreenUpdating = False
    j = 1
    For Each para In mySelect.Paragraphs
        Set myrange = para.Range
        If Left(myrange.text, Len(myrange.text) - 1) = "<bR>" Then
            myrange.Duplicate.text = "Câu " & j & Chr(13)
            j = j + 1
        End If
    Next para
Err:
    Application.ScreenUpdating = True
End Sub
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom