Мені доводиться об’єднувати декілька 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 для відповіді № 1Sub 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