/ / об'єднати кілька Excel в єдину книгу Excel з різними стовпцями у всіх файлах Excel - excel, vba, excel-vba

об'єднати декілька excel в одну книгу Excel з різними стовпцями в кожному файлі excel - excel, vba, excel-vba

Мені доводиться об’єднувати декілька Excel в єдину книгу Excel. Припустимо, у мене є 3 аркуші Excel.

ExcelA.xls - він містить 3 стовпці A, B, C

ExcelB.xls - він містить 4 стовпці B, D, E, F

ExcelC.xls - він містить 3 стовпці A, C, D

Тепер мій ExcelFinal.xls повинен містити як A, B, C, D, E, F завжди, відображення даних щодо стовпців повинно бути незмінним завжди. Також назву стовпця не слід повторювати в рядках. Нам потрібно досягти цього за допомогою сценарію VB.

Швидка допомога буде вдячна!

Дякую! Алок

Відповіді:

0 для відповіді № 1

Sub CopyData()
Dim sourceColumn As Range, targetColumn As Range
Dim columnValues, sourceWorksheet, sourceWorkbook, targetWorkheet, targetWorkbook As String
Dim currentWorkbook, templateWorksheet, reference As String

sourceWorkbook = "Data.xlsx"
sourceWorksheet = "data"
targetWorkbook = "DynamicColumnsTemplate.xlsm"
targetWorkheet = "data"
templateWorksheet = "template"

" For 1st column
Set currentWorkbook = Workbooks(targetWorkbook)
currentWorkbook.Sheets(templateWorksheet).Activate
reference = "A4"
columnValues = Range(reference).value

If columnValues <> " " Then

Set sourceColumn = Workbooks("Data.xlsx").Worksheets(1).Columns(columnValues)
Set targetColumn = Workbooks("DynamicColumnsTemplate.xlsm").Worksheets("data").Columns("A")
sourceColumn.Copy Destination:=targetColumn
End If


" For 2nd column
Set currentWorkbook = Workbooks(targetWorkbook)
currentWorkbook.Sheets(templateWorksheet).Activate
reference = "B4"
columnValues = Range(reference).value

If columnValues <> " " Then

Set sourceColumn = Workbooks("Data.xlsx").Worksheets(1).Columns(columnValues)
Set targetColumn = Workbooks("DynamicColumnsTemplate.xlsm").Worksheets("data").Columns("B")
sourceColumn.Copy Destination:=targetColumn
End If


" For 3rd column
Set currentWorkbook = Workbooks(targetWorkbook)
currentWorkbook.Sheets(templateWorksheet).Activate
reference = "C4"
columnValues = Range(reference).value

If columnValues <> " " Then

Set sourceColumn = Workbooks("Data.xlsx").Worksheets(1).Columns(columnValues)
Set targetColumn = Workbooks("DynamicColumnsTemplate.xlsm").Worksheets("data").Columns("C")
sourceColumn.Copy Destination:=targetColumn
End If

" For 4th column
Set currentWorkbook = Workbooks(targetWorkbook)
currentWorkbook.Sheets(templateWorksheet).Activate
reference = "D4"
columnValues = Range(reference).value

If columnValues <> " " Then

Set sourceColumn = Workbooks("Data.xlsx").Worksheets(1).Columns(columnValues)
Set targetColumn = Workbooks("DynamicColumnsTemplate.xlsm").Worksheets("data").Columns("D")
sourceColumn.Copy Destination:=targetColumn
End If

" For 5th column
Set currentWorkbook = Workbooks(targetWorkbook)
currentWorkbook.Sheets(templateWorksheet).Activate
reference = "E4"
columnValues = Range(reference).value

If columnValues <> " " Then

Set sourceColumn = Workbooks("Data.xlsx").Worksheets(1).Columns(columnValues)
Set targetColumn = Workbooks("DynamicColumnsTemplate.xlsm").Worksheets("data").Columns("E")
sourceColumn.Copy Destination:=targetColumn
End If

End Sub