Excel Импорт данных из разных книг Динамические заголовки Медленный макрос для больших файлов - PullRequest
0 голосов
/ 09 октября 2019

У меня есть этот код ниже, который копирует данные в основную рабочую книгу, в листах "Inputs1", сопоставляя заголовки столбцов из основной рабочей книги с исходной рабочей книгой. Если заголовок столбца совпадает, он скопирует и вставит этот столбец в соответствующий столбец в главной рабочей книге.

Макрос отлично работает для небольших файлов, но как только я запускаю его для больших файлов, это занимает почти 2 минуты, чтобыrun.

Как улучшить этот код, чтобы он работал быстрее и эффективнее? Я все еще получаю мерцание страницы тоже.

Sub Import()

Application.ScreenUpdating = False

EventState = Application.EnableEvents
Application.EnableEvents = False

CalcState = Application.Calculation
Application.Calculation = xlCalculationManual

PageBreakState = ActiveSheet.DisplayPageBreaks
ActiveSheet.DisplayPageBreaks = False

Dim wbSource As Workbook
Dim wbDest As Workbook
Dim TargetSheet As Worksheet
Dim c As Range
Dim rng As Range
Dim i As Integer
Dim MyRange As Range
Dim SourceSheet As Worksheet
Dim source As String
Dim dest As String
Dim r As Range
Dim msg As String


source = Worksheets("Set-Up").Range("B11")

dest = Worksheets("Set-Up").Range("B8")

Set wbSource = Workbooks(source)
Set SourceSheet = wbSource.Worksheets("HFL01 Extract")

Set wbDest = Workbooks(dest)
Set TargetSheet = wbDest.Worksheets("INPUTS1")

    With SourceSheet.Range("A1").CurrentRegion
        For Each r In TargetSheet.Range("A1:cc1")
            Set c = .Rows(1).Find(r.Value, , , xlWhole, , 0)
            If Not c Is Nothing Then
                .Columns(c.Column).Copy
                r.PasteSpecial xlPasteValues

            End If
        Next
        Application.CutCopyMode = False
    End With

Set fileDialog = Nothing
Set wbSource = Nothing

End Sub
...