如何合并 2 个不同工作簿之间的数据?
How can I consolidate data between 2 different Workbooks?
我需要合并 2 个学生在不同工作簿(控股和子公司)之间的注册。因此,当我单击“生成图形”按钮时,数据将合并到 sheet“总计”中,然后计算课程数量(Excel、Word、Access…),图形是在sheet“图形”中生成。第一次测试没问题,但是当我再次点击时,列表正在增加,与子公司工作簿的相同数据。我需要更改代码中的某些内容,但我不知道是什么。
你可以帮帮我吗?
我的代码是:
Sub GerarGrafico()
Dim k As Long
'copying data of the “Course Booking” Sheet
Sheets("Course Booking").Select
Range("A1").Select
linini = 2
'Select the last row
Selection.End(xlDown).Select
linfin = Selection.Row
'Select the last column
Selection.End(xlToRight).Select
colfin = Selection.Column
Range(Cells(linini, 1), Cells(linfin, colfin)).Select
Selection.Copy
‘复制数据到sheet"Total"
Sheets("Total").Select
Cells(linini, 1).Select
ActiveSheet.Paste
Application.CutCopyMode = False
‘Copying data of the “reserva filial.xlsm”
caminho = ThisWorkbook.Path
Workbooks.Open caminho & "\" & "reserva filial.xlsm"
'copying data
Range("A1").Select
linini2 = 2
'Select the last row
Selection.End(xlDown).Select
linfin2 = Selection.Row
'Select the last column
Selection.End(xlToRight).Select
colfin2 = Selection.Column
Range(Cells(linini2, 1), Cells(linfin2, colfin2)).Select
Selection.Copy
Windows("Trabalho_Felipe Granado_v8.xlsm").Activate
Sheets("Total").Select
'Select the last row with value
Selection.End(xlDown).Select
k = ActiveCell.Row + 1
Cells(k, 1).Activate
Application.Windows("reserva filial.xlsm").Visible = False
'pasting data "reserva filial.xlsm" in the sheet "Total"
ActiveSheet.Paste
Application.CutCopyMode = False
Columns.HorizontalAlignment = xlCenter
这部分代码导航到sheet
中数据的末尾
'Select the last row with value
Selection.End(xlDown).Select
k = ActiveCell.Row + 1
Cells(k, 1).Activate
然后粘贴 "reserva filial.xlsm"
数据。
它在第一次通过时工作正常,但是第二次 运行 代码时,您(正确地)粘贴了第一个工作簿数据,将第二个工作簿数据留在它下面,导航到末尾数据,并重新粘贴到第二个工作簿数据中。
根据您的 Excel 项目如何组合在一起,您可能希望使用 .ClearContents
方法清除 Sheets("Total")
的全部内容或其子集。
它的作用相当于Excel中的Ctrl + Shift + 向下(箭头)和Ctrl + Shift + 向右(箭头)。现在没关系,它将仅用作列表。我真的很感谢你的建议。我是 VBA 和 Stack Overflow 的新用户,这个社区非常有用,因为您的所有贡献。
我需要合并 2 个学生在不同工作簿(控股和子公司)之间的注册。因此,当我单击“生成图形”按钮时,数据将合并到 sheet“总计”中,然后计算课程数量(Excel、Word、Access…),图形是在sheet“图形”中生成。第一次测试没问题,但是当我再次点击时,列表正在增加,与子公司工作簿的相同数据。我需要更改代码中的某些内容,但我不知道是什么。 你可以帮帮我吗? 我的代码是:
Sub GerarGrafico()
Dim k As Long
'copying data of the “Course Booking” Sheet
Sheets("Course Booking").Select
Range("A1").Select
linini = 2
'Select the last row
Selection.End(xlDown).Select
linfin = Selection.Row
'Select the last column
Selection.End(xlToRight).Select
colfin = Selection.Column
Range(Cells(linini, 1), Cells(linfin, colfin)).Select
Selection.Copy
‘复制数据到sheet"Total"
Sheets("Total").Select
Cells(linini, 1).Select
ActiveSheet.Paste
Application.CutCopyMode = False
‘Copying data of the “reserva filial.xlsm”
caminho = ThisWorkbook.Path
Workbooks.Open caminho & "\" & "reserva filial.xlsm"
'copying data
Range("A1").Select
linini2 = 2
'Select the last row
Selection.End(xlDown).Select
linfin2 = Selection.Row
'Select the last column
Selection.End(xlToRight).Select
colfin2 = Selection.Column
Range(Cells(linini2, 1), Cells(linfin2, colfin2)).Select
Selection.Copy
Windows("Trabalho_Felipe Granado_v8.xlsm").Activate
Sheets("Total").Select
'Select the last row with value
Selection.End(xlDown).Select
k = ActiveCell.Row + 1
Cells(k, 1).Activate
Application.Windows("reserva filial.xlsm").Visible = False
'pasting data "reserva filial.xlsm" in the sheet "Total"
ActiveSheet.Paste
Application.CutCopyMode = False
Columns.HorizontalAlignment = xlCenter
这部分代码导航到sheet
中数据的末尾'Select the last row with value
Selection.End(xlDown).Select
k = ActiveCell.Row + 1
Cells(k, 1).Activate
然后粘贴 "reserva filial.xlsm"
数据。
它在第一次通过时工作正常,但是第二次 运行 代码时,您(正确地)粘贴了第一个工作簿数据,将第二个工作簿数据留在它下面,导航到末尾数据,并重新粘贴到第二个工作簿数据中。
根据您的 Excel 项目如何组合在一起,您可能希望使用 .ClearContents
方法清除 Sheets("Total")
的全部内容或其子集。
它的作用相当于Excel中的Ctrl + Shift + 向下(箭头)和Ctrl + Shift + 向右(箭头)。现在没关系,它将仅用作列表。我真的很感谢你的建议。我是 VBA 和 Stack Overflow 的新用户,这个社区非常有用,因为您的所有贡献。