VBA to import Excel worksheet, append new rows, and update existing rows

前端 未结 1 1145
礼貌的吻别
礼貌的吻别 2021-01-16 03:03

I\'m using Excel to produce reports for a support ticketing system, and I\'d like to use VBA to simplify the process of updating the report data. What I want to do is import

相关标签:
1条回答
  • 2021-01-16 03:42

    I just wrote this, and it worked:

        Sub import_tickets()
            'run this when the active file is the main ticket list and the active sheet is the ticket list
            'exported file must be open already, and the ticket list must be the active sheet
            Dim exported_file As String
            exported_file = "exported file.xlsx"
            header_exists = True 'if exported file doesn't have a header, set this to false!
            starting_row = 1
            If header_exists Then starting_row = 2
    
            Dim first_blank_row As Long
            first_blank_row = Cells.SpecialCells(xlCellTypeLastCell).Offset(1, 0).Row
    
            Dim r As Long
            r = starting_row
            Dim found As Range
            cur_ticket_num = Workbooks(exported_file).ActiveSheet.Range("a" & r).Value
            Do While Not cur_ticket_num = ""
                'look for current ticket number in main file
                Set found = Columns("a:a").Find(what:=cur_ticket_num, LookIn:=xlValues, lookat:=xlWhole)
                If found Is Nothing Then
                    'add info to end of main file
                    write_line_from_export exported_file, r, first_blank_row
                    first_blank_row = first_blank_row + 1
                Else
                    'overwrite existing line of main file
                    write_line_from_export exported_file, r, found.Row
                End If
                r = r + 1
                cur_ticket_num = Workbooks(exported_file).ActiveSheet.Range("a" & r).Value
            Loop
        End Sub
    
        Sub write_line_from_export(src_filename As String, src_r As Long, dest_r As Long)
            For c = 1 To 24
                Cells(dest_r, c).Value = Workbooks(src_filename).ActiveSheet.Cells(src_r, c).Value
            Next c
        End Sub
    

    I hope it helps. I referenced this page for the first blank row code and this page for the find code. I wrote the code in the main ticket file's module.

    0 讨论(0)
提交回复
热议问题