Привет! Я попытался найти возможные решения для моего вопроса, но не могу найти точный код, который мне нужен.
Мне нужно скопировать данные из двух разных книг с разными именами, а также с разными столбцами. Я использовал свой код при копировании данных из одной рабочей книги, но есть ошибка:
«Ошибка автоматизации».
Итак, мне нужно скопировать данные с имен листов 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