Lọc dữ liệu từ file word sang excel

Liên hệ QC

mynguyenanh

Thành viên mới
Tham gia
30/7/10
Bài viết
15
Được thích
1
Em có 1 file word giấy báo thi, Em muốn lọc những học sinh có cùng địa điểm thi sang 1 file excel. Mong các ace của GPE giúp em với.
 

File đính kèm

  • _T1_Giay bao du thi_lop_12A6_5.docx
    2.8 MB · Đọc: 12

File đính kèm

  • Giay_bao_thi.xlsm
    687.1 KB · Đọc: 18
Lần chỉnh sửa cuối:
Em có 1 file word giấy báo thi, Em muốn lọc những học sinh có cùng địa điểm thi sang 1 file excel. Mong các ace của GPE giúp em với.
thử code này xem sao? (Mới nghiên cứu tới VBA của Word nên viết thử code)
Mã:
Public Sub GPE()
    Dim tb As Table, Dic As Object, s As String
    Dim NameArr(), SchoolsArr(), i As Integer, j As Integer
    Dim myExcel As Object, myWb As Object, myWh As Object
    Dim ArrList(), k As Integer, h As Integer

    Set Dic = CreateObject("Scripting.Dictionary")
    i = 0
    For Each tb In ThisDocument.Tables
        If tb.Rows.Count = 17 Then
            i = i + 1
            s = tb.Cell(1, 1).Range.Text
            ReDim Preserve NameArr(1 To i): ReDim Preserve SchoolsArr(1 To i)
            NameArr(i) = Mid(s, 18, Len(s) - 18)
            s = tb.Cell(9, 1).Range.Text
            SchoolsArr(i) = Mid(s, 19, Len(s) - 19)
        End If
    Next tb
   
    If i = 0 Then Exit Sub
    Set myExcel = CreateObject("Excel.Application")
    myExcel.Application.Visible = True
    Set myWb = myExcel.Workbooks.Add
    For j = 1 To i
        If Not Dic.Exists(SchoolsArr(j)) Then
            Dic.Add SchoolsArr(j), SchoolsArr(j)
            h = 0: Erase ArrList: ReDim ArrList(1 To i, 1 To 2)
            For k = j To i
                If SchoolsArr(j) = SchoolsArr(k) Then
                    h = h + 1
                    ArrList(h, 1) = h
                    ArrList(h, 2) = NameArr(k)
                End If
            Next k
            If j <> 1 Then myWb.Worksheets.Add
            Set myWh = myWb.ActiveSheet
            myWh.Range("A2") = "STT": myWh.Range("B2") = "HO VA TEN"
            myWh.Range("A3").Resize(h, 2) = ArrList
            myWh.Columns("A:B").EntireColumn.AutoFit
            myWh.Range("A2").Resize(h + 1, 2).Borders.LineStyle = 1
            myWh.Range("A1") = SchoolsArr(j)
        End If
    Next j
    Set Dic = Nothing
    Set myExcel = Nothing
    Set myWb = Nothing
    Set myWh = Nothing
End Sub
 
thử code này xem sao? (Mới nghiên cứu tới VBA của Word nên viết thử code)
Mã:
Public Sub GPE()
    Dim tb As Table, Dic As Object, s As String
    Dim NameArr(), SchoolsArr(), i As Integer, j As Integer
    Dim myExcel As Object, myWb As Object, myWh As Object
    Dim ArrList(), k As Integer, h As Integer

    Set Dic = CreateObject("Scripting.Dictionary")
    i = 0
    For Each tb In ThisDocument.Tables
        If tb.Rows.Count = 17 Then
            i = i + 1
            s = tb.Cell(1, 1).Range.Text
            ReDim Preserve NameArr(1 To i): ReDim Preserve SchoolsArr(1 To i)
            NameArr(i) = Mid(s, 18, Len(s) - 18)
            s = tb.Cell(9, 1).Range.Text
            SchoolsArr(i) = Mid(s, 19, Len(s) - 19)
        End If
    Next tb
  
    If i = 0 Then Exit Sub
    Set myExcel = CreateObject("Excel.Application")
    myExcel.Application.Visible = True
    Set myWb = myExcel.Workbooks.Add
    For j = 1 To i
        If Not Dic.Exists(SchoolsArr(j)) Then
            Dic.Add SchoolsArr(j), SchoolsArr(j)
            h = 0: Erase ArrList: ReDim ArrList(1 To i, 1 To 2)
            For k = j To i
                If SchoolsArr(j) = SchoolsArr(k) Then
                    h = h + 1
                    ArrList(h, 1) = h
                    ArrList(h, 2) = NameArr(k)
                End If
            Next k
            If j <> 1 Then myWb.Worksheets.Add
            Set myWh = myWb.ActiveSheet
            myWh.Range("A2") = "STT": myWh.Range("B2") = "HO VA TEN"
            myWh.Range("A3").Resize(h, 2) = ArrList
            myWh.Columns("A:B").EntireColumn.AutoFit
            myWh.Range("A2").Resize(h + 1, 2).Borders.LineStyle = 1
            myWh.Range("A1") = SchoolsArr(j)
        End If
    Next j
    Set Dic = Nothing
    Set myExcel = Nothing
    Set myWb = Nothing
    Set myWh = Nothing
End Sub
Quá dữ! Anh có ít tài liệu vba word không cho em học cái ạ!
 
Web KT
Back
Top Bottom