xin chỉ giáo macro tìm nội dung giống nhau trong word chuyển thành excel

Liên hệ QC

Bo Cong Anh old

Thành viên mới
Tham gia
10/5/22
Bài viết
4
Được thích
0
#xin các bác chỉ giáo macro nào trong excel hoặc word để xử lý tình huống này với
Làm thế nào để lấy được dãy số phía sau CertifiedCode và chuyển thành 1 cột ở file excel ạ
Ví dụ trong trường hợp "CertifiedCode":"55E8006844" là lấy 55E8006844
 

File đính kèm

  • data.docx
    17.6 KB · Đọc: 6
#xin các bác chỉ giáo macro nào trong excel hoặc word để xử lý tình huống này với
Làm thế nào để lấy được dãy số phía sau CertifiedCode và chuyển thành 1 cột ở file excel ạ
Ví dụ trong trường hợp "CertifiedCode":"55E8006844" là lấy 55E8006844
Kết quả trả về excel như thế nào?
 
Upvote 0
Tiếng Việt là chỉ dẫn. Chỉ giáo là tiếng Tầu, dùng với người lạ có khả năng bị hiểu là châm biếm.
 
Upvote 0
Tên tập tin Excel là gì, cả 2 tập tin ở cùng thư mục hay gì?
 
Upvote 0
Code sau ta đặt trong tập tin Word - data.docx (Alt + F11 -> menu Insert -> Module -> dán code vào Module -> lưu với tên data.docm)

Trong code tôi coi tên là "hic hic.xlsx". Tự sửa lại.

Cách 1. Cho nội dung Word vào chuỗi text rồi dùng biểu thức chính quy.

Mã:
Sub lay_so_reg()
Dim k As Long, text As String, ExcelFile As String, result(), re As Object, matches As Object, match As Object, ExcelApp As Object
    text = ThisDocument.Content.text
    Set re = CreateObject("VBScript.RegExp")
    With re
        .IgnoreCase = True
        .Global = True
        .Pattern = """CertifiedCode"":""(.+?)"""
    End With
    Set matches = re.Execute(text)
    If matches.Count Then
        ReDim result(1 To matches.Count, 1 To 1)
        For Each match In matches
            k = k + 1
            result(k, 1) = match.SubMatches(0)
        Next match
        ExcelFile = ThisDocument.Path & "\hic hic.xlsx"
        Set ExcelApp = CreateObject("Excel.Application")
        ExcelApp.Visible = True
        With ExcelApp.Workbooks.Open(ExcelFile)
            .Worksheets(1).Range("A1").Resize(UBound(result, 1)).Value = result
        End With
    End If
    Set re = Nothing
End Sub

Cũng có thể sau khi có text thì dùng VBA.Instr

Cách 2. Dùng phương thức FIND của đối tượng Selection

Mã:
Sub lay_so_find()
Dim k As Long, text As String, ExcelFile As String, result(), ExcelApp As Object
    ReDim result(1 To 1000, 1 To 1)
    Application.Selection.Start = 0
    With Application.Selection.Find
        .ClearFormatting
        .text = """CertifiedCode"":""*"""
        .MatchWildcards = True
        Do While .Execute
            k = k + 1
            text = Application.Selection.text
            text = Mid(text, InStr(1, text, ":") + 2)
            result(k, 1) = Left(text, Len(text) - 1)
        Loop
    End With
    If k Then
        ExcelFile = ThisDocument.Path & "\hic hic.xlsx"
        Set ExcelApp = CreateObject("Excel.Application")
        ExcelApp.Visible = True
        With ExcelApp.Workbooks.Open(ExcelFile)
            .Worksheets(1).Range("A1").Resize(k).Value = result
        End With
    End If
End Sub
 
Upvote 0
Sub lay_so_find() Dim k As Long, text As String, ExcelFile As String, result(), ExcelApp As Object ReDim result(1 To 1000, 1 To 1) Application.Selection.Start = 0 With Application.Selection.Find .ClearFormatting .text = """CertifiedCode"":""*""" .MatchWildcards = True Do While .Execute k = k + 1 text = Application.Selection.text text = Mid(text, InStr(1, text, ":") + 2) result(k, 1) = Left(text, Len(text) - 1) Loop End With If k Then ExcelFile = ThisDocument.Path & "\hic hic.xlsx" Set ExcelApp = CreateObject("Excel.Application") ExcelApp.Visible = True With ExcelApp.Workbooks.Open(ExcelFile) .Worksheets(1).Range("A1").Resize(k).Value = result End With End If End Sub
chân thành cám ơn pro hihi
 
Upvote 0
Web KT

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

Back
Top Bottom