![매크로를 최적화하는 방법](https://rvso.com/image/1641917/%EB%A7%A4%ED%81%AC%EB%A1%9C%EB%A5%BC%20%EC%B5%9C%EC%A0%81%ED%99%94%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
매년 전년도와 동일한 구조를 가진 새로운 연간 Excel 파일이 있습니다. 작년에는 해당 Excel 파일의 모든 시트에서 읽어야 하는 행과 열을 정의하고 계산 결과를 동일한 파일에 반환했습니다.
새해에는 전체 절차를 반복해야 합니다. 데이터를 수동으로 다시 바인딩하지 않고도 링크와 수식을 전년도에서 다음 연도로 이동할 수 있는 방법이 있습니까?
이것은 매크로로 기록됩니다:
Sub NewYearData()
' NewYearData Makronaredba
Windows("PreviousYear.xlsm").Activate
Sheets("1.A.1.a.ii Liquid Fuels").Select
Range("C16:AH18").Select
Selection.Copy
Application.WindowState = xlNormal
Windows("CurrentYear2.xlsx").Activate
Range("C16").Select
ActiveSheet.Paste Link:=True
ActiveSheet.Paste
Windows("PreviousYear.xlsm").Activate
Sheets("1.A.1.a.ii Gaseous Fuels Gaseo").Select
Range("C16:AH18").Select
Application.CutCopyMode = False
Selection.Copy
Windows("CurrentYear2.xlsx").Activate
Sheets("1.A.1.a.ii Gaseous Fuels Gaseo").Select
Range("C16:AH18").Select
ActiveSheet.Paste
End Sub
모든 시트에 대해 어떻게 만드나요?
- 두 파일 모두에서 동일한 이름을 가진 모든 시트에 대해
- 참조가 있는 셀 찾기
- 소스 파일의 참조를 동일한 위치의 대상 파일로 복사
답변1
이는 동일한 시트가 있다고 가정합니다.(같은 이름으로) ~에둘 다통합 문서. 우리는 몇몇 객체를 정의하고 루프를 사용합니다:
Sub NewYearData()
Dim wb1 As Workbook, wb2 As Workbook
Dim r1 As Range, r2 As Range
Dim addy As String, sh As Worksheet
Dim shName As String
Set wb1 = Workbooks("PreviousYear.xlsm")
Set wb2 = Workbooks("CurrentYear2.xlsx")
addy = "C16:AH18"
For Each sh In wb1.Sheets
shName = sh.Name
Set r1 = sh.Range(addy)
Set r2 = wb2.Sheets(shName).Range(addy)
r1.Copy r2
Next sh
End Sub