매크로를 최적화하는 방법

매크로를 최적화하는 방법

매년 전년도와 동일한 구조를 가진 새로운 연간 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. 두 파일 모두에서 동일한 이름을 가진 모든 시트에 대해
  2. 참조가 있는 셀 찾기
  3. 소스 파일의 참조를 동일한 위치의 대상 파일로 복사

답변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

관련 정보