Привет, я пытался найти возможные решения для моего вопроса, но я не могу найти точный код, который мне нужен.
Мне нужно скопировать данные из двух разных книг с разными именами листов, а также с разными столбцами. Я использовал свой код при копировании данных из одной книги, но есть ошибка, говорящая
«Ошибка автоматики».
Итак, что мне нужно сделать, это скопировать данные с имен листов Raw Data
и Arm Checklist
на мой основной рабочий лист, также названный Raw Data
.
Столбцы, которые мне нужно скопировать из Raw Data
, из A7:Q
, а в Arm Checklist
из C3:D,G,E,H:J,K,M:Q
. Данные из этих столбцов необходимо объединить с моим MainWorkfile Raw Data
Sub SAMPLE()
Dim MainWorkfile As Workbook
Dim OtherWorkfile As Workbook
Dim OtherWorkfile2 As Workbook
Dim TrackerSht As Worksheet
Dim FilterSht As Worksheet
Dim FilterSht2 As Worksheet
Dim lRow As Long, lRw As Long
Application.ScreenUpdating = False
Application.DisplayAlerts = False
' set workbook object
Set MainWorkfile = ActiveWorkbook
' set the worksheet object
Set TrackerSht = MainWorkfile.Sheets("Raw Data")
With TrackerSht
lRow = .Cells(.Rows.Count, "A").End(xlUp).Row ' last row with data in column "C"
.Range("A7:S7" & lRow).ClearContents
End With
Application.AskToUpdateLinks = False
' set the 2nd workbook object
Set OtherWorkfile = Workbooks.Open(Filename:=Application.GetOpenFilename)
' set the 2nd worksheet object
Set FilterSht = OtherWorkfile.Sheets("Raw Data")
With FilterSht
If .FilterMode Or .AutoFilterMode Then .AutoFilterMode = False
lRw = .Cells(.Rows.Count, "A").End(xlUp).Row ' last row with data in column "C"
.Range("A7:Q" & lRw).Copy ' copy your range
End With
' paste
TrackerSht.Range("A7:Q" & lRow).PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
OtherWorkfile.Close
Set OtherWorkfile2 = Workbooks.Open(Filename:=Application.GetOpenFilename)
' set the 2nd worksheet object
Set FilterSht2 = OtherWorkfile.Sheets("Arm Checklist")
With FilterSht2
If .FilterMode Or .AutoFilterMode Then .AutoFilterMode = False
lRw = .Cells(.Rows.Count, "A").End(xlUp).Row ' last row with data in column "C"
.Range("C3:D" & lRw).Copy ' copy your range
End With
' paste
TrackerSht.Range("A:B" & lRow).PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
' implement it for the rest of your columns...
With FilterSht2
If .FilterMode Or .AutoFilterMode Then .AutoFilterMode = False
lRw = .Cells(.Rows.Count, "A").End(xlUp).Row ' last row with data in column "C"
.Range("G3:G" & lRw).Copy ' copy your range
End With
' paste
TrackerSht.Range("C7:C" & lRow).PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
With FilterSht2
If .FilterMode Or .AutoFilterMode Then .AutoFilterMode = False
lRw = .Cells(.Rows.Count, "A").End(xlUp).Row ' last row with data in column "C"
.Range("E3:E" & lRw).Copy ' copy your range
End With
' paste
TrackerSht.Range("E7:E" & lRow).PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
With FilterSht2
If .FilterMode Or .AutoFilterMode Then .AutoFilterMode = False
lRw = .Cells(.Rows.Count, "A").End(xlUp).Row ' last row with data in column "C"
.Range("H3:J" & lRw).Copy ' copy your range
End With
' paste
TrackerSht.Range("F7:H" & lRow).PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
OtherWorkfile2.Close
End Sub