/ / fusionar múltiples Excel en un solo libro de Excel con diferentes columnas en cada archivo de Excel: excel, vba, excel-vba

Combine múltiples Excel en un solo libro de Excel con diferentes columnas en cada archivo de Excel: excel, vba, excel-vba

Tengo que combinar múltiples sobresalir en un solo libro de Excel. Supongamos que tengo 3 hojas de excel.

ExcelA.xls - contiene 3 columnas A, B, C

ExcelB.xls - contiene 4 columnas B, D, E, F

ExcelC.xls - contiene 3 columnas A, C, D

Ahora mi ExcelFinal.xls debe contener como A, B, C, D, E, F siempre, la asignación de datos contra las columnas siempre debe estar intacta. Además, el nombre de la columna no debe repetirse en filas. Necesitamos lograr esto usando el script VB.

¡La ayuda rápida será muy apreciada!

¡Gracias! Alok

Respuestas

0 para la respuesta № 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