1. 程式人生 > >20181014xlVBA獲取小題零分名單

20181014xlVBA獲取小題零分名單

row shee election cati name scrip -- scripting file

Sub GetZeroName()
    Dim Dic As Object
    Const SUBJECT = "科目名稱"
    Dim Key As String
    Dim OneKey
    Dim Wb As Workbook
    Dim Sht As Worksheet
    Dim FolderPath As String
    Dim FileName As String
    Dim FilePath As String
    Dim wdApp As Object
    Dim wdDoc As Object
    
    Const StartCol = "G"
    Const EndCol = "X"
    Set Dic = CreateObject("Scripting.Dictionary")
    Set Wb = Application.ThisWorkbook
    FolderPath = Wb.Path & "\"
    Set Sht = Wb.Worksheets(1)
    On Error Resume Next
    Set wdApp = GetObject(, "Word.Application")
    If wdApp Is Nothing Then
        Set wdApp = CreateObject("Word.Application")
    End If
    On Error GoTo 0
    
    With Sht
        EndRow = .Cells(.Cells.Rows.Count, 1).End(xlUp).Row
        For i = 2 To EndRow
            Key = .Cells(i, 3).Text
            Dic(Key) = ""
        Next
        
        
        
        For Each OneKey In Dic.Keys
            
            FileName = OneKey & "班" & SUBJECT & "小題零分名單.docx"
            On Error Resume Next
            wdApp.documents(FileName).Close
            On Error GoTo 0
            
            FilePath = FolderPath & FileName
            On Error Resume Next
            Kill FilePath
            On Error GoTo 0
            
            
            
            
            report = OneKey & "班" & SUBJECT & "小題零分名單" & vbCrLf
            For j = .Cells(1, StartCol).Column To .Cells(1, EndCol).Column
                
                ‘Key = OneKey & ";" & .Cells(1, j).Text
                report = report & vbCrLf & "【" & .Cells(1, j).Text & "】--------------------------------------------------------------------------------------------------------------" & vbCrLf & "    "
                For i = 2 To EndRow
                    If .Cells(i, 3).Text = OneKey Then
                        If .Cells(i, j).Value = 0 Then
                            report = report & .Cells(i, 2).Value & ";"
                        End If
                    End If
                Next i
            Next j
            ‘Debug.Print "__________________________________________________________________________________"
            ‘Debug.Print report
            
            Set wdDoc = wdApp.documents.Add
            wdDoc.SaveAs FilePath
            wdApp.Selection.typetext report
            wdDoc.Save
            wdDoc.Close
            
            
        Next OneKey
        
        
        
        
        
        
    End With
    
    wdApp.Quit
    Set Wb = Nothing
    Set Sht = Nothing
    Set wdApp = Nothing
    Set wdDoc = Nothing
End Sub

  

20181014xlVBA獲取小題零分名單